1
1
mirror of https://github.com/github/semantic.git synced 2024-11-28 10:15:55 +03:00
semantic/script/generate-example
Douglas Creager cf803555e5 Make error reporter API generic
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.
2019-05-31 08:58:34 -04:00

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."