mirror of
https://github.com/github/semantic.git
synced 2024-12-25 16:02:43 +03:00
cf803555e5
Instead of hard-coding the HTTP API we use for uploading errors to our internal service, let the user provide an arbitrary function (in the IO monad) for uploading them. The default config will create an error reporter that logs errors to the console, just like happened before if you didn't set the `HAYSTACK_URL` environment variable.
71 lines
1.7 KiB
Bash
Executable File
71 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
#/ Usage: script/generate-example fileA fileB
|
|
#/ script/generate-example directory
|
|
#/
|
|
#/ Generate expected output for a test fixture example or directory of examples.
|
|
#/
|
|
#/ Example:
|
|
#/ script/generate-example test/fixtures/ruby/corpus/and-or.{A,B}.rb
|
|
#/ script/generate-example test/fixtures/ruby/corpus
|
|
|
|
set -e
|
|
[ $# -eq 0 ] && set -- --help
|
|
|
|
if [[ $1 = -h || $1 = --help ]]; then
|
|
grep ^#/ <"$0" |cut -c4-
|
|
exit
|
|
fi
|
|
|
|
# Work out of the project root directory
|
|
root=$(cd $(dirname "$0")/.. && pwd)
|
|
cd "$root"
|
|
|
|
count=0
|
|
status () {
|
|
tput cuu 1 && tput el
|
|
echo "Generating $1"
|
|
((count+=1))
|
|
}
|
|
|
|
generate_example () {
|
|
fileA="$1"
|
|
fileB="$2"
|
|
parseFileA="${fileA%%.*}.parseA.txt"
|
|
parseFileB="${fileB%%.*}.parseB.txt"
|
|
diffFileAB="${fileA%%.*}.diffA-B.txt"
|
|
diffFileBA="${fileB%%.*}.diffB-A.txt"
|
|
|
|
if [ -e "$fileA" ]; then
|
|
status $parseFileA
|
|
cabal new-run --verbose=0 semantic -- parse --sexpression $fileA > $parseFileA
|
|
fi
|
|
|
|
if [ -e "$fileB" ]; then
|
|
status $parseFileB
|
|
cabal new-run --verbose=0 semantic -- parse --sexpression $fileB > $parseFileB
|
|
fi
|
|
|
|
if [ -e "$fileA" -a -e "$fileB" ]; then
|
|
status $diffFileAB
|
|
cabal new-run --verbose=0 semantic -- diff --sexpression $fileA $fileB > $diffFileAB
|
|
|
|
status $diffFileBA
|
|
cabal new-run --verbose=0 semantic -- diff --sexpression $fileB $fileA > $diffFileBA
|
|
fi
|
|
}
|
|
|
|
if [[ -d $1 ]]; then
|
|
echo "Generating all examples for $1"
|
|
echo ""
|
|
for f in $(ls $1/*.A.*); do
|
|
# echo "${f%%.*}.B."${f##*.}""
|
|
generate_example $f "${f%%.*}.B."${f##*.}""
|
|
done
|
|
else
|
|
echo "Generating examples just for $1 $2"
|
|
echo ""
|
|
generate_example $1 $2
|
|
fi
|
|
|
|
echo "Done. Generated $count examples."
|