#!/usr/bin/env bash ### ### typecheck a given target ### ### > typecheck.sh ### ### Uses repl.sh to provision the environment for target, then runs the ### appropriate typechecker for the given module. ### help() { sed -rn 's/^### ?//;T;p' "$0" } if [[ $# == 0 ]] || [[ "$1" == "-h" ]]; then help exit 1 fi target="$1" # Determine file extension ext="${target##*.}" case "$ext" in py) # Python: use mypy via repl.sh environment repl.sh --cmd "python -m mypy $target" "$target" ;; hs) # Haskell: use ghc -fno-code for typechecking without code generation # Use repl.sh to provision the right GHC environment with dependencies repl.sh --cmd "ghc -fno-code -i${CODEROOT:?} $target" "$target" ;; *) echo "Unknown file extension: $ext" echo "Typechecking not supported for this file type" exit 1 ;; esac