Merge pull request #12323 from Rylan12/cleanup-developer-mode-handling

Cleanup developer mode handling in `brew.{sh,rb}`
This commit is contained in:
Mike McQuaid 2021-10-27 11:12:00 +01:00 committed by GitHub
commit 66c0b8c6f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 51 additions and 52 deletions

View File

@ -86,44 +86,7 @@ begin
require "commands" require "commands"
require "settings" require "settings"
if cmd internal_cmd = Commands.valid_internal_cmd?(cmd) || Commands.valid_internal_dev_cmd?(cmd) if cmd
internal_cmd = Commands.valid_internal_cmd?(cmd)
internal_cmd ||= begin
internal_dev_cmd = Commands.valid_internal_dev_cmd?(cmd)
if internal_dev_cmd && !Homebrew::EnvConfig.developer?
if ENV["HOMEBREW_DEV_CMD_RUN"].blank?
opoo <<~MESSAGE
#{Tty.bold}#{cmd}#{Tty.reset} is a developer command, so
Homebrew's developer mode has been automatically turned on.
To turn developer mode off, run #{Tty.bold}brew developer off#{Tty.reset}
MESSAGE
end
Homebrew::Settings.write "devcmdrun", true
ENV["HOMEBREW_DEV_CMD_RUN"] = "1"
end
internal_dev_cmd
end
end
developer_mode = if cmd == "developer" && ARGV.include?("on")
true
elsif cmd == "developer" && ARGV.include?("off")
false
else
Homebrew::EnvConfig.developer? || Homebrew::Settings.read("devcmdrun") == "true"
end
if internal_dev_cmd && Homebrew::EnvConfig.install_from_api?
odie "Developer commands cannot be run while HOMEBREW_INSTALL_FROM_API is set!"
elsif Homebrew::EnvConfig.install_from_api? && developer_mode
opoo <<~MESSAGE
Developers should not have HOMEBREW_INSTALL_FROM_API set!
Please unset HOMEBREW_INSTALL_FROM_API or turn developer mode off by running:
brew developer off
MESSAGE
end
unless internal_cmd unless internal_cmd
# Add contributed commands to PATH before checking. # Add contributed commands to PATH before checking.

View File

@ -718,12 +718,42 @@ then
fi fi
export HOMEBREW_CORE_GIT_REMOTE export HOMEBREW_CORE_GIT_REMOTE
if [[ -f "${HOMEBREW_LIBRARY}/Homebrew/cmd/${HOMEBREW_COMMAND}.sh" ]] # Set HOMEBREW_DEVELOPER_COMMAND if the command being run is a developer command
if [[ -f "${HOMEBREW_LIBRARY}/Homebrew/dev-cmd/${HOMEBREW_COMMAND}.sh" ]] ||
[[ -f "${HOMEBREW_LIBRARY}/Homebrew/dev-cmd/${HOMEBREW_COMMAND}.rb" ]]
then then
HOMEBREW_BASH_COMMAND="${HOMEBREW_LIBRARY}/Homebrew/cmd/${HOMEBREW_COMMAND}.sh" export HOMEBREW_DEVELOPER_COMMAND="1"
elif [[ -f "${HOMEBREW_LIBRARY}/Homebrew/dev-cmd/${HOMEBREW_COMMAND}.sh" ]] fi
# Set HOMEBREW_DEVELOPER_MODE if this command will turn (or keep) developer mode on. This is the case if:
# - The command being run is not `brew developer off`
# - Any of the following are true
# - HOMEBREW_DEVELOPER is set
# - HOMEBREW_DEV_CMD_RUN is set
# - A developer command is being run
# - The command being run is `brew developer on`
if [[ "${HOMEBREW_COMMAND}" != "developer" || ! $* =~ "off" ]] &&
[[ -n "${HOMEBREW_DEVELOPER}" ||
-n "${HOMEBREW_DEV_CMD_RUN}" ||
-n "${HOMEBREW_DEVELOPER_COMMAND}" ||
"${HOMEBREW_COMMAND}" == "developer" && $* =~ "on" ]]
then then
if [[ -z "${HOMEBREW_DEVELOPER}" ]] export HOMEBREW_DEVELOPER_MODE="1"
fi
if [[ -n "${HOMEBREW_INSTALL_FROM_API}" && -n "${HOMEBREW_DEVELOPER_COMMAND}" ]]
then
odie "Developer commands cannot be run while HOMEBREW_INSTALL_FROM_API is set!"
elif [[ -n "${HOMEBREW_INSTALL_FROM_API}" && -n "${HOMEBREW_DEVELOPER_MODE}" ]]
then
message="Developers should not have HOMEBREW_INSTALL_FROM_API set!
Please unset HOMEBREW_INSTALL_FROM_API or turn developer mode off by running:
brew developer off
"
opoo "${message}"
fi
if [[ -n "${HOMEBREW_DEVELOPER_COMMAND}" && -z "${HOMEBREW_DEVELOPER}" ]]
then then
if [[ -z "${HOMEBREW_DEV_CMD_RUN}" ]] if [[ -z "${HOMEBREW_DEV_CMD_RUN}" ]]
then then
@ -737,6 +767,12 @@ To turn developer mode off, run $(bold "brew developer off")
git config --file="${HOMEBREW_GIT_CONFIG_FILE}" --replace-all homebrew.devcmdrun true 2>/dev/null git config --file="${HOMEBREW_GIT_CONFIG_FILE}" --replace-all homebrew.devcmdrun true 2>/dev/null
export HOMEBREW_DEV_CMD_RUN="1" export HOMEBREW_DEV_CMD_RUN="1"
fi fi
if [[ -f "${HOMEBREW_LIBRARY}/Homebrew/cmd/${HOMEBREW_COMMAND}.sh" ]]
then
HOMEBREW_BASH_COMMAND="${HOMEBREW_LIBRARY}/Homebrew/cmd/${HOMEBREW_COMMAND}.sh"
elif [[ -f "${HOMEBREW_LIBRARY}/Homebrew/dev-cmd/${HOMEBREW_COMMAND}.sh" ]]
then
HOMEBREW_BASH_COMMAND="${HOMEBREW_LIBRARY}/Homebrew/dev-cmd/${HOMEBREW_COMMAND}.sh" HOMEBREW_BASH_COMMAND="${HOMEBREW_LIBRARY}/Homebrew/dev-cmd/${HOMEBREW_COMMAND}.sh"
fi fi