mirror of
https://github.com/koalaman/shellcheck.git
synced 2024-11-20 20:40:34 -08:00
79 lines
1.4 KiB
Bash
Executable File
79 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# This file strips all unit tests from ShellCheck, removing
|
|
# the dependency on QuickCheck and Template Haskell and
|
|
# reduces the binary size considerably.
|
|
set -o pipefail
|
|
|
|
sponge() {
|
|
local data
|
|
data="$(cat)"
|
|
printf '%s\n' "$data" > "$1"
|
|
}
|
|
|
|
modify() {
|
|
if ! "${@:2}" < "$1" | sponge "$1"
|
|
then
|
|
{
|
|
printf 'Failed to modify %s: ' "$1"
|
|
printf '%q ' "${@:2}"
|
|
printf '\n'
|
|
} >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
detestify() {
|
|
printf '%s\n' '-- AUTOGENERATED from ShellCheck by striptests. Do not modify.'
|
|
awk '
|
|
BEGIN {
|
|
state = 0;
|
|
}
|
|
|
|
/STRIP/ { next; }
|
|
/LANGUAGE TemplateHaskell/ { next; }
|
|
/^import.*Test\./ { next; }
|
|
|
|
/^module/ {
|
|
sub(/,[^,)]*runTests/, "");
|
|
}
|
|
|
|
# Delete tests
|
|
/^prop_/ { state = 1; next; }
|
|
|
|
# ..and any blank lines following them.
|
|
state == 1 && /^ / { next; }
|
|
|
|
# Template Haskell marker
|
|
/^return / {
|
|
exit;
|
|
}
|
|
|
|
{ state = 0; print; }
|
|
'
|
|
}
|
|
|
|
|
|
|
|
if [[ ! -e 'ShellCheck.cabal' ]]
|
|
then
|
|
echo "Run me from the ShellCheck directory." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -d '.git' ]] && ! git diff --exit-code > /dev/null 2>&1
|
|
then
|
|
echo "You have local changes! These may be overwritten." >&2
|
|
exit 2
|
|
fi
|
|
|
|
modify 'ShellCheck.cabal' sed -e '
|
|
/QuickCheck/d
|
|
/^test-suite/{ s/.*//; q; }
|
|
'
|
|
|
|
find . -name '.git' -prune -o -type f -name '*.hs' -print |
|
|
while IFS= read -r file
|
|
do
|
|
modify "$file" detestify
|
|
done
|