|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +# basher installation scheme for dependencies; you can change this if you want, |
| 4 | +# so long as all the variables are correct. The .devkit/dk script will clone |
| 5 | +# basher to $BASHER_ROOT and look for binaries in $BASHER_INSTALL_BIN. |
| 6 | + |
| 7 | +export BASHER_PREFIX="$PWD/.deps" |
| 8 | +export BASHER_INSTALL_BIN="$BASHER_PREFIX/bin" |
| 9 | +export BASHER_INSTALL_MAN="$BASHER_PREFIX/man" |
| 10 | + |
| 11 | +# Dependencies are checked out here: |
| 12 | +export BASHER_PACKAGES_PATH="$BASHER_PREFIX" |
| 13 | +export BASHER_ROOT="$BASHER_PACKAGES_PATH/basherpm/basher" |
| 14 | + |
| 15 | +# Build go-based deps in .deps |
| 16 | +export GOPATH="$BASHER_PREFIX/go" |
| 17 | +export GOBIN="$BASHER_INSTALL_BIN" |
| 18 | + |
| 19 | +# Stub in case direnv isn't being used |
| 20 | +declare -F -- watch_file >/dev/null || watch_file() { :;} |
| 21 | + |
| 22 | +# If these files change, so might our paths, so direnv should reload |
| 23 | +watch_file \ |
| 24 | + "$BASHER_PREFIX/.gimme-env" \ |
| 25 | + "$BASHER_INSTALL_BIN/activate" \ |
| 26 | + "$BASHER_INSTALL_BIN/python" \ |
| 27 | + "$PWD/composer.json" \ |
| 28 | + "$PWD/package.json" \ |
| 29 | + "$PWD/.nvmrc" |
| 30 | + |
| 31 | +# Activate nvm if Node project w/.nvmrc (but don't install node) |
| 32 | +if [[ -f .nvmrc ]]; then |
| 33 | + if ! declare -F -- nvm >/dev/null; then |
| 34 | + # No user-level nvm? Install as a project dependency |
| 35 | + [[ "${NVM_DIR-}" ]] || export NVM_DIR="$BASHER_PREFIX/nvm-sh/nvm" |
| 36 | + [[ -d "${NVM_DIR}" ]] || git clone -q --depth=1 https://github.com/nvm-sh/nvm.git "$NVM_DIR" |
| 37 | + source "$NVM_DIR/nvm.sh" --no-use |
| 38 | + fi |
| 39 | + nvm use || true # Allow failures to proceed anyway |
| 40 | +fi |
| 41 | + |
| 42 | +# Activate gimme/go enviornment if Go project |
| 43 | +[[ ! -f "$BASHER_PREFIX/.gimme-env" ]] || source "$BASHER_PREFIX/.gimme-env" |
| 44 | + |
| 45 | +# Activate virtualenv if present |
| 46 | +[[ -f $BASHER_INSTALL_BIN/activate && -f $BASHER_INSTALL_BIN/python ]] && |
| 47 | + [[ ! "${VIRTUAL_ENV-}" || $VIRTUAL_ENV != "$BASHER_PREFIX" ]] && |
| 48 | + VIRTUAL_ENV_DISABLE_PROMPT=true source $BASHER_INSTALL_BIN/activate |
| 49 | + |
| 50 | +__dk_path() { [[ :"${!1}": == *:"$2":* ]] || export $1="$2:${!1}"; } |
| 51 | + |
| 52 | +# Activate .composer/vendor/bin if PHP project |
| 53 | +[[ ! -f composer.json ]] || __dk_path PATH "$PWD/vendor/bin" |
| 54 | + |
| 55 | +# Activate node_modules/.bin if Node project |
| 56 | +[[ ! -f package.json ]] || __dk_path PATH "$PWD/node_modules/.bin" |
| 57 | + |
| 58 | +# $BASHER_INSTALL_BIN must be on PATH to use commands installed as deps |
| 59 | +__dk_path PATH "$BASHER_INSTALL_BIN" |
| 60 | + |
| 61 | +# You can add other variables you want available via direnv. Configuration |
| 62 | +# variables for devkit itself, however, should go in .dkrc unless they need |
| 63 | +# to be available via direnv as well. |
0 commit comments