diff options
Diffstat (limited to 'ves-export.sh')
| -rw-r--r-- | ves-export.sh | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/ves-export.sh b/ves-export.sh index e69de29..0f36006 100644 --- a/ves-export.sh +++ b/ves-export.sh @@ -0,0 +1,39 @@ +#!/bin/sh +# +# Set an environment variable within an sh-ves environment. If the target +# environment is currently active, the variable is also exported into the +# live shell. +# +ves_export() { + env="" + case $1 in + --env=*) + env="${1#--env=}" + shift + ;; + esac + + if [ "$#" -lt 2 ]; then + printf "ERROR: Insufficient arguments. usage: ves export [--env=<name>] <variable> <value>\n" >&2 + return 2 + fi + + var="$1" + value="$2" + + if ! env=$(_shves_resolve_env "$env"); then + return 1 + fi + + if ! _shves_check_var_name "$var"; then + return 1 + fi + + _shves_set_var "$SHVES_ENV_DIR/$env" "$var" "$value" + + if [ "$env" = "$SHVES_ENV_NM" ]; then + _shves_live_export "$var" "$value" + fi + + return 0 +} |