Created
January 24, 2020 20:55
-
-
Save hasufell/d20cd455004f5fb4890605af57cffa18 to your computer and use it in GitHub Desktop.
Automatic installer for haskell applications
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
set -eu | |
SCRIPT_DIR="$(CDPATH="" cd -- "$(dirname -- "$0")" && pwd -P)" | |
cd "${SCRIPT_DIR}" | |
# install ghcup | |
if ! [ -e "${SCRIPT_DIR}"/.ghcup/bin/ghcup ] ; then | |
mkdir -p "${SCRIPT_DIR}"/.ghcup/bin | |
curl --proto '=https' --tlsv1.2 -sSf https://gitlab.haskell.org/haskell/ghcup/raw/master/ghcup > "${SCRIPT_DIR}"/.ghcup/bin/ghcup | |
chmod +x "${SCRIPT_DIR}"/.ghcup/bin/ghcup | |
fi | |
# set up environment | |
export PATH="${SCRIPT_DIR}/.ghcup/bin:$PATH" | |
export GHCUP_INSTALL_BASE_PREFIX="${SCRIPT_DIR}" | |
# get ghc version from cabal.project | |
ghc_ver=$(grep with-compiler cabal.project | awk '{print $2}' | sed 's/ghc-//') | |
# install ghc | |
if ! ghcup list -t ghc -c installed -r | grep -q "${ghc_ver}" ; then | |
ghcup install "${ghc_ver}" | |
fi | |
# install cabal-install | |
if [ -z "$(ghcup list -t cabal-install -c installed -r)" ] ; then | |
ghcup install-cabal | |
fi | |
[ -e "${SCRIPT_DIR}"/bin ] || mkdir "${SCRIPT_DIR}"/bin | |
# install binary | |
cabal v2-install \ | |
--installdir="${SCRIPT_DIR}"/bin \ | |
--install-method=copy \ | |
--overwrite-policy=always |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment