mirror of
https://github.com/GaloisInc/cryptol.git
synced 2024-08-17 01:41:09 +03:00
Unfortunately, the autogenerated documentation (now located in `Cryptol.rst`) doesn't yet have all of the information contained within the hand-written documentation (now located in `old-Cryptol.rst`—see #1206. In pursuit of eventually fixing that issue, the CI now makes sure that any changes to the autogenerated documentation are checked in.
107 lines
2.9 KiB
Bash
Executable File
107 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
BIN=bin
|
|
|
|
QUICKTESTS="tests/issues tests/modsys tests/mono-binds tests/parser tests/regression tests/renamer"
|
|
|
|
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 COMMAND_OPTIONS
|
|
Available commands:
|
|
run Run Cryptol
|
|
build Build Cryptol
|
|
haddock Generate Haddock documentation
|
|
test Run some tests (may take a while)
|
|
quick-test Like "test" but run fewer tests by default
|
|
rpc-test Run RPC server tests
|
|
rpc-docs Check that the RPC documentation is up-to-date
|
|
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
|
|
|
|
if [[ -n "$RELEASE" ]]; then
|
|
sed -i.bak -e 's/^commitShortHash = .*$/commitShortHash = "UNKNOWN"/' \
|
|
-e 's/^commitHash = .*$/commitHash = "UNKNOWN"/' \
|
|
-e 's/^commitBranch = .*$/commitBranch = "UNKNOWN"/' \
|
|
-e 's/^commitDirty = .*$/commitDirty = False/' \
|
|
-e '/import qualified GitRev/d' \
|
|
src/Cryptol/Version.hs
|
|
rm -f src/Cryptol/Version.hs.bak
|
|
fi
|
|
|
|
cabal v2-build "$@" exe:cryptol
|
|
|
|
sed -i.bak "/^-- Last build/d" src/GitRev.hs
|
|
rm -f src/GitRev.hs.bak
|
|
;;
|
|
|
|
haddock) echo Building Haddock documentation && cabal v2-haddock ;;
|
|
|
|
quick-test)
|
|
echo Running quick tests
|
|
setup_external_tools
|
|
$BIN/test-runner --ext=.icry \
|
|
--exe=cabal \
|
|
-F v2-run -F -v0 -F exe:cryptol -F -- -F -b \
|
|
$QUICKTESTS
|
|
;;
|
|
|
|
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
|
|
;;
|
|
|
|
rpc-test)
|
|
echo Running RPC server tests
|
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
$DIR/cryptol-remote-api/run_rpc_tests.sh
|
|
;;
|
|
|
|
rpc-docs)
|
|
echo "Checking cryptol-remote-api docs (Cryptol.rst) are up-to-date with server"
|
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
$DIR/cryptol-remote-api/check_docs.sh
|
|
;;
|
|
|
|
|
|
help) show_usage && exit 0 ;;
|
|
|
|
exe-path) cabal v2-exec which cryptol ;;
|
|
|
|
*) echo "Unrecognized command: $COMMAND" && show_usage && exit 1 ;;
|
|
esac
|