Skip to content

Instantly share code, notes, and snippets.

@EduardoRFS
Last active May 27, 2020 23:15
Show Gist options
  • Save EduardoRFS/57dc3f94ee710adec31bc02e930b6f73 to your computer and use it in GitHub Desktop.
Save EduardoRFS/57dc3f94ee710adec31bc02e930b6f73 to your computer and use it in GitHub Desktop.
#! /bin/sh
set -e
set -u
OCAMLC_PATH=$(dirname $0)
BSC="$OCAMLC_PATH/bsc"
NEW_ARGS=""
for ARG in "$@"
do
case "$ARG" in
*.ml)
ML_INPUT=$ARG
;;
*.ml-gen)
NAME="$(basename $ARG .ml-gen)"
TARGET="$(dirname $ARG)/$NAME"
ML_INPUT="$TARGET.ml"
cp "$TARGET.ml-gen" "$TARGET.ml"
ARG="$TARGET.ml"
;;
*) ;;
esac
if [ "$ARG" == "-g" ]; then
ARG="-bs-g"
fi
if (
[ "$ARG" != "-a" ] &&
[ "$ARG" != "-opaque" ] &&
[ "$ARG" != "-impl" ]
); then
NEW_ARGS="$NEW_ARGS $ARG"
fi
done
OUTPUT=$(echo $NEW_ARGS | grep -o -e "-o .*" | awk '{print $2}')
case "$OUTPUT" in
*.cmo)
NAME="$(basename $OUTPUT .cmo)"
TARGET="$(dirname $OUTPUT)/$NAME"
ln -s $NAME.cmj $TARGET.cmo
NEW_ARGS="$NEW_ARGS > $TARGET.js"
eval "$BSC $NEW_ARGS"
;;
*.cma|*.exe|*.bc)
echo "no-op" > $OUTPUT
;;
*)
eval "$BSC $NEW_ARGS"
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment