Skip to content

Commit

Permalink
Merge pull request #15821 from carlocab/no-eval-grep
Browse files Browse the repository at this point in the history
bin/brew: avoid `eval` and `grep`
  • Loading branch information
MikeMcQuaid authored Aug 4, 2023
2 parents 4877de5 + bcbb969 commit 75a1948
Showing 1 changed file with 21 additions and 26 deletions.
47 changes: 21 additions & 26 deletions bin/brew
Original file line number Diff line number Diff line change
Expand Up @@ -78,28 +78,30 @@ unset BREW_FILE_DIRECTORY
HOMEBREW_LIBRARY="${HOMEBREW_REPOSITORY}/Library"

# Load Homebrew's variable configuration files from disk.
export_homebrew_env_file() {
local env_file

env_file="${1}"
[[ -r "${env_file}" ]] || return 0
while read -r line
do
# only load HOMEBREW_* lines
[[ "${line}" = "HOMEBREW_"* ]] || continue
export "${line?}"
done <"${env_file}"
}

# First, load the system-wide configuration.
if [[ -f "/etc/homebrew/brew.env" ]]
unset SYSTEM_ENV_TAKES_PRIORITY
if [[ -n "${HOMEBREW_SYSTEM_ENV_TAKES_PRIORITY-}" ]]
then
unset SYSTEM_ENV_TAKES_PRIORITY
# only load HOMEBREW_*=* lines
SYSTEM_HOMEBREW_ENV="$(grep -E '^HOMEBREW_[A-Z_]+=.*$' "/etc/homebrew/brew.env")"
if [[ -n "${HOMEBREW_SYSTEM_ENV_TAKES_PRIORITY-}" ]]
then
SYSTEM_ENV_TAKES_PRIORITY="1"
else
eval "${SYSTEM_HOMEBREW_ENV}"
fi
SYSTEM_ENV_TAKES_PRIORITY="1"
else
export_homebrew_env_file "/etc/homebrew/brew.env"
fi

# Next, load the prefix configuration
if [[ -f "${HOMEBREW_PREFIX}/etc/homebrew/brew.env" ]]
then
# only load HOMEBREW_*=* lines
PREFIX_HOMEBREW_ENV="$(grep -E '^HOMEBREW_[A-Z_]+=.*$' "${HOMEBREW_PREFIX}/etc/homebrew/brew.env")"
eval "${PREFIX_HOMEBREW_ENV}"
unset PREFIX_HOMEBREW_ENV
fi
export_homebrew_env_file "${HOMEBREW_PREFIX}/etc/homebrew/brew.env"

# Finally, load the user configuration
if [[ -n "${XDG_CONFIG_HOME-}" ]]
Expand Down Expand Up @@ -129,20 +131,13 @@ else
exit 1
fi

if [[ -f "${HOMEBREW_USER_CONFIG_HOME}/brew.env" ]]
then
# only load HOMEBREW_*=* lines
USER_HOMEBREW_ENV="$(grep -E '^HOMEBREW_[A-Z_]+=.*$' "${HOMEBREW_USER_CONFIG_HOME}/brew.env")"
eval "${USER_HOMEBREW_ENV}"
unset USER_HOMEBREW_ENV
fi
export_homebrew_env_file "${HOMEBREW_USER_CONFIG_HOME}/brew.env"

# If the system configuration takes priority, load it last.
if [[ -n "${SYSTEM_ENV_TAKES_PRIORITY-}" ]]
then
eval "${SYSTEM_HOMEBREW_ENV}"
export_homebrew_env_file "/etc/homebrew/brew.env"
fi
unset SYSTEM_HOMEBREW_ENV

# Copy and export all HOMEBREW_* variables previously mentioned in
# manpage or used elsewhere by Homebrew.
Expand Down

0 comments on commit 75a1948

Please sign in to comment.