cryptol/cry
Aaron Tomb 2f4684c8af
Build system and documentation cleanup (#816)
* Remove `Makefile`
* Remove Travis and AppVeyor configurations
* Improve portability of the `cry` script
* Fix Docker builds
* Update documentation to remove references to `make`
* Update copyright dates
* Fix omitted section of CONTRIBUTING.md
* Update Z3 installation instructions

Fixes #570, #603, #790, #807.
2020-07-14 10:58:38 -07:00

68 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
BIN=bin
function setup_external_tools() {
[[ -x "$BIN/test-runner" || -x "$BIN/test-runner.exe" ]] && return
cabal v2-install --install-method=copy --installdir="$BIN" test-lib
}
function show_usage() {
cat << EOM
Usage: $0 COMMAND COMANND_OPTIONS
Available commands:
run Run Cryptol
build Build Cryptol
haddock Generate Haddock documentation
test Run some tests
exe-path Print the location of the local executable
EOM
}
if [ "$#" == "0" ]; then
show_usage
exit 1
fi
COMMAND=$1
shift
case $COMMAND in
run) cabal v2-exec cryptol -- $* ;;
build)
echo Building Cryptol
# XXX: This is a workaround the fact that currently Cabal
# will not rebuild this file, even though it has TH code, that
# depends on the environment. For now, we temporarily modify the
# file, then build, then revert it back after build.
dirty_string="-- Last build $(date)"
echo "$dirty_string" >> src/GitRev.hs
cabal v2-build exe:cryptol
sed -i.bak "/^$dirty_string/d" src/GitRev.hs
rm -f src/GitRev.hs.bak
;;
haddock) echo Building Haddock documentation && cabal v2-haddock ;;
test)
echo Running tests
setup_external_tools
if [ "$#" == "0" ]; then TESTS=tests; else TESTS=$*; fi
$BIN/test-runner --ext=.icry \
--exe=cabal \
-F v2-run -F -v0 -F exe:cryptol -F -- -F -b \
$TESTS
;;
help) show_usage && exit 0 ;;
exe-path) cabal v2-exec which cryptol ;;
*) echo "Unrecognized command: $COMMAND" && show_usage && exit 1 ;;
esac