diff --git a/Library/Homebrew/brew.rb b/Library/Homebrew/brew.rb index 4e26545326..290b7a3db8 100644 --- a/Library/Homebrew/brew.rb +++ b/Library/Homebrew/brew.rb @@ -107,6 +107,10 @@ begin end if internal_cmd || Commands.external_ruby_v2_cmd_path(cmd) + if Commands::INSTALL_FROM_API_FORBIDDEN_COMMANDS.include?(cmd) && Homebrew::EnvConfig.install_from_api? + odie "This command cannot be run while HOMEBREW_INSTALL_FROM_API is set!" + end + Homebrew.send Commands.method_name(cmd) elsif (path = Commands.external_ruby_cmd_path(cmd)) require?(path) diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index 3e5bd2cedf..39b1771a88 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -748,34 +748,6 @@ then export HOMEBREW_DEVELOPER_COMMAND="1" 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 - export HOMEBREW_DEVELOPER_MODE="1" -fi - -if [[ -n "${HOMEBREW_INSTALL_FROM_API}" && -n "${HOMEBREW_DEVELOPER_COMMAND}" && "${HOMEBREW_COMMAND}" != "irb" ]] -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 if [[ -z "${HOMEBREW_DEV_CMD_RUN}" ]] diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index 4e817276d2..199d04185a 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -140,6 +140,10 @@ module Homebrew def install args = install_args.parse + if args.build_from_source? && Homebrew::EnvConfig.install_from_api? + raise UsageError, "--build-from-source is not supported when using HOMEBREW_INSTALL_FROM_API." + end + if args.env.present? # Can't use `replacement: false` because `install_args` are used by # `build.rb`. Instead, `hide_from_man_page` and don't do anything with diff --git a/Library/Homebrew/cmd/reinstall.rb b/Library/Homebrew/cmd/reinstall.rb index fa0f68f0b4..bc6bca5053 100644 --- a/Library/Homebrew/cmd/reinstall.rb +++ b/Library/Homebrew/cmd/reinstall.rb @@ -88,6 +88,10 @@ module Homebrew def reinstall args = reinstall_args.parse + if args.build_from_source? && Homebrew::EnvConfig.install_from_api? + raise UsageError, "--build-from-source is not supported when using HOMEBREW_INSTALL_FROM_API." + end + formulae, casks = args.named.to_formulae_and_casks(method: :resolve) .partition { |o| o.is_a?(Formula) } diff --git a/Library/Homebrew/commands.rb b/Library/Homebrew/commands.rb index e9450b3fed..64b0dfa7f6 100644 --- a/Library/Homebrew/commands.rb +++ b/Library/Homebrew/commands.rb @@ -31,6 +31,25 @@ module Commands "tc" => "typecheck", }.freeze + INSTALL_FROM_API_FORBIDDEN_COMMANDS = %w[ + audit + bottle + bump-cask-pr + bump-formula-pr + bump-revision + bump-unversioned-casks + cat + create + edit + extract + formula + livecheck + pr-pull + pr-upload + test + update-python-resources + ].freeze + def valid_internal_cmd?(cmd) require?(HOMEBREW_CMD_PATH/cmd) end diff --git a/Library/Homebrew/dev-cmd/unbottled.rb b/Library/Homebrew/dev-cmd/unbottled.rb index 9d8b98cde5..1880498277 100644 --- a/Library/Homebrew/dev-cmd/unbottled.rb +++ b/Library/Homebrew/dev-cmd/unbottled.rb @@ -114,7 +114,7 @@ module Homebrew end.compact @sort = " (sorted by installs in the last 90 days; top 10,000 only)" - all_formulae = Formula + all_formulae = Formula.all end [formulae, all_formulae, formula_installs]