#!/usr/bin/env bash # This file provides some tooling on an opt-in basis via `direnv` # (https://direnv.net/) # To use the functionality here, create an `.envrc.local` file in this folder # that runs the functions you need. # There is an example in `.envrc.local.example` you can start with # `use nvm` # if `nvm` is installed, use it to select the right node.js version # as defined in the `.nvmrc` file use_nvm() { local NVM_DIR if [[ -z "${XDG_CONFIG_HOME:-}" ]]; then NVM_DIR="${HOME}/.nvm" else NVM_DIR="${XDG_CONFIG_HOME}/nvm" fi if ! [[ -d "$NVM_DIR" ]]; then echo >&2 "ERROR: nvm not found. Could not set the node.js version." return 1 fi # shellcheck source=/dev/null [[ -s "$NVM_DIR/nvm.sh" ]] && \. "$NVM_DIR/nvm.sh" # This loads nvm nvm use } # `use ghcup` # if `ghcup` is available, use it to install and set the GHC version # as defined in the `.ghcversion` file use_ghcup() { local GHC_VERSION GHCUP_PATH GHC_VERSION="$(<.ghcversion)" GHCUP_PATH="$(which ghcup)" if [[ -z "$GHC_VERSION" ]]; then echo >&2 'ERROR: Required GHC version not found.' return 1 fi if [[ -z "$GHCUP_PATH" ]]; then echo 'ERROR: ghcup not found. Could not set the GHC version.' return 1 fi if ! ghcup whereis ghc "$GHC_VERSION" &> /dev/null; then ghcup install ghc "$GHC_VERSION" fi ghcup set ghc "$GHC_VERSION" } # this line sources your `.envrc.local` file source_env_if_exists .envrc.local