43 lines
1.1 KiB
Bash
Executable File
43 lines
1.1 KiB
Bash
Executable File
#!/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
|
|
|
|
echo "Binary installed in: ${SCRIPT_DIR}/bin"
|
|
|