Ctrl K
ComunidadGuías…

scripts/lib/butler-source-env.sh

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Safe .env loader for bash scripts with `set -u` (source, do not execute).
# Usage: ROOT=... source scripts/lib/butler-source-env.sh
#        butler_source_env "$ROOT/.env"

_lib_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

butler_fix_path_after_env() {
  # shellcheck source=scripts/lib/butler-systemd-install.sh
  source "$_lib_dir/butler-systemd-install.sh"
  local safe merged env_path
  safe="$(butler_systemd_path)"
  env_path="${PATH:-}"
  # systemd EnvironmentFile does not expand $PATH; strip literal artifact
  env_path="${env_path//:\$PATH/}"
  env_path="${env_path//\$PATH:/}"
  env_path="${env_path//\$PATH/}"
  merged="$safe"
  if [[ -n "$env_path" ]]; then
    merged="$merged:$env_path"
  fi
  local nvm_bin=""
  local IFS=':'
  for seg in $merged; do
    if [[ "$seg" == *"/.nvm/versions/node/"* ]]; then
      nvm_bin="$seg"
      break
    fi
  done
  if [[ -n "$nvm_bin" ]]; then
    local rest=""
    for seg in $merged; do
      [[ "$seg" == "$nvm_bin" ]] && continue
      rest="${rest:+$rest:}$seg"
    done
    merged="${nvm_bin}:${rest}"
  fi
  export PATH="$merged"
}

butler_source_env() {
  local env_file="${1:-}"
  if [[ -z "$env_file" || ! -f "$env_file" ]]; then
    return 1
  fi
  local had_u=0
  case $- in *u*) had_u=1 ;; esac
  set +u
  set -a
  # shellcheck disable=SC1090
  source "$env_file"
  set +a
  if [[ "$had_u" -eq 1 ]]; then
    set -u
  fi
  butler_fix_path_after_env
  return 0
}