123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #!/usr/bin/env bash
- # Read variables from file, if there are any variables asks user to trust it,
- #
- # Usage:
- # __rvm_file_load_env_and_trust <file_to_load> [variables_prefix]
- #
- # @param file_to_load the file to load variables from
- # @param variables_prefix optional filter for variables, ex: "#ruby-env-"
- # @env __file_env_variables contains the variables loaded from file, empty if user does not trust the file
- #
- __rvm_file_load_env_and_trust()
- {
- [[ -f "$1" ]] || return 0
- __rvm_file_load_env "$1" "${2:-}"
- if
- (( ${#__file_env_variables[@]} == 0 )) ||
- __rvm_check_rvmrc_trustworthiness "$1"
- then
- true
- else
- rvm_debug "Envirionment variables variables from '$1' wont be loaded because of lack of trust (status=$?)."
- __file_env_variables=()
- fi
- }
- # Read variables from file,
- #
- # Usage:
- # __rvm_file_load_env_and_trust <file_to_load> [variables_prefix]
- #
- # @param file_to_load the file to load variables from
- # @param variables_prefix optional filter for variables, ex: "#ruby-env-"
- # @env __file_env_variables contains the variables loaded from file,
- #
- __rvm_file_load_env()
- {
- \typeset -a __sed_commands
- __sed_commands=()
- if [[ -n "${2:-}" ]]
- then __sed_commands+=( -e "/^$2/ !d" -e "s/^$2//" ) # filter other content and remove prefix
- else __sed_commands+=( -e "/^#/ d" -e "/^$/ d" ) # remove comments and empty lines
- fi
- __rvm_read_lines __file_env_variables <( { cat "$1"; echo ""; } | __rvm_sed "${__sed_commands[@]}" )
- }
- # Resets previously loaded environment,
- # if any new variables are available - loads them,
- #
- # @env rvm_saved_env used to restore variables, emptied out on the end
- # @env __file_env_variables used to load new variables
- #
- __rvm_file_set_env()
- {
- __rvm_file_env_check_unload
- __rvm_set_env "rvm_saved_env" "${__file_env_variables[@]}"
- }
- # Resets previously loaded environment,
- #
- # @env rvm_saved_env used to restore variables, emptied out on the end
- #
- __rvm_file_env_check_unload()
- {
- if (( ${#rvm_saved_env[@]} > 0 ))
- then __rvm_set_env "" "${rvm_saved_env[@]}"
- fi
- rvm_saved_env=()
- }
- # Sets environment variables,
- #
- # Usage:
- # __rvm_set_env <save_to> [var1 [var2]...]
- #
- # @param save_to store previous values of environment variables in this variable if it's provided
- # @param var... "key=value" pairs for the environment to set to
- #
- # @env ${save_to} "key=value" pairs of saved environment
- #
- __rvm_set_env()
- {
- \typeset __save_to __set __key __value
- __save_to="$1"
- shift
- for __set in "$@"
- do
- __key="${__set%%=*}"
- __value="${__set#*=}"
- case "$__value" in
- (\"*\")
- __value="${__value#\"}"
- __value="${__value%\"}"
- ;;
- (\'*\')
- __value="${__value#\'}"
- __value="${__value%\'}"
- ;;
- esac
- rvm_debug "key=$__key; value=$__value;"
- if [[ -n "${__save_to}" ]]
- then eval "${__save_to}+=( \"\${__key}=\${${__key}}\" )"
- fi
- if [[ -n "${__value}" ]]
- then eval "export \${__key}=\"\${__value}\""
- else eval "unset \${__key}"
- fi
- done
- }
|