Glen Whitney
f789ed94fd
Some checks failed
continuous-integration/drone/push Build is failing
Also start using nailgun to speed up code generation. Resolves #6.
85 lines
1.9 KiB
Bash
Executable File
85 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
##### Convenience:
|
|
erro() { printf "%s\n" "$*" >&2; }
|
|
|
|
##### Set defaults:
|
|
SUPPRESS_ERR=YES
|
|
USE_NAILGUN=YES
|
|
LANGUAGE=Python
|
|
|
|
##### Extract command line options:
|
|
while [[ $1 = -* ]]
|
|
do
|
|
case $1 in
|
|
-h|--help)
|
|
echo
|
|
echo "Usage:"
|
|
echo " fosgen [-d] [-j] [-l LANGUAGE] FILE"
|
|
echo
|
|
echo "Writes to standard output the code generated from the fostr"
|
|
echo "program in FILE, targeting the specified LANGUAGE (which"
|
|
echo "defaults to Python)."
|
|
echo
|
|
echo "The -d option writes diagnostic output to standard error."
|
|
echo "The -j option uses the Spoofax Sunshine JAR directly, rather"
|
|
echo "than via nailgun."
|
|
exit
|
|
;;
|
|
-d)
|
|
SUPPRESS_ERR=''
|
|
;;
|
|
-j)
|
|
USE_NAILGUN=''
|
|
;;
|
|
-l)
|
|
shift
|
|
LANGUAGE="$1"
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
##### Get positional arguments:
|
|
PROGRAM=$1
|
|
|
|
##### Corral resources:
|
|
BINDIR=$(dirname $BASH_SOURCE)
|
|
SUNJAR="$BINDIR/../lib/sunshine.jar"
|
|
PROJDIR="$BINDIR/.."
|
|
|
|
if [[ ! -f $SUNJAR ]]; then
|
|
erro "Please download the Spoofax Sunshine jar to the lib directory."
|
|
erro "Recommended command:"
|
|
erro " curl -o lib/sunshine.jar -L 'http://artifacts.metaborg.org/service/local/artifact/maven/redirect?r=snapshots&g=org.metaborg&a=org.metaborg.sunshine2&v=LATEST'"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! $MVN_REPO ]]; then
|
|
MVN_REPO="$HOME/.m2/repository"
|
|
fi
|
|
if [[ ! -d $MVN_REPO ]]; then
|
|
MVN_REPO="/root/.m2/repository"
|
|
fi
|
|
if [[ ! -d $MVN_REPO ]]; then
|
|
erro "Cannot find your Maven repository. Please set environment variable"
|
|
erro "MVN_REPO to its full path and re-run."
|
|
exit 1
|
|
fi
|
|
|
|
##### Perform the code generation:
|
|
if [[ $SUPPRESS_ERR ]]
|
|
then
|
|
exec 2>/dev/null
|
|
fi
|
|
|
|
if [[ $USE_NAILGUN ]]
|
|
then
|
|
$BINDIR/let_sun_shine
|
|
$BINDIR/ng sunshine transform -p $PROJDIR -n $LANGUAGE -i $PROGRAM
|
|
exit $?
|
|
fi
|
|
|
|
java -jar $SUNJAR transform -p $PROJDIR -l $PROJDIR -l $MVN_REPO -n $LANGUAGE -i $PROGRAM
|
|
exit $?
|