diff --git a/Library/Homebrew/cli/args.rb b/Library/Homebrew/cli/args.rb index 765e9d2963..2f2b90a125 100644 --- a/Library/Homebrew/cli/args.rb +++ b/Library/Homebrew/cli/args.rb @@ -179,6 +179,12 @@ module Homebrew cmdline_args.include?("--build-from-source") || cmdline_args.include?("-s") end + def force_bottle + return true if args_parsed && force_bottle? + + cmdline_args.include?("--force-bottle") + end + private def downcased_unique_named diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb index 018c875058..2f4c3fd381 100644 --- a/Library/Homebrew/extend/ARGV.rb +++ b/Library/Homebrew/extend/ARGV.rb @@ -40,10 +40,6 @@ module HomebrewArgvExtension arch&.to_sym end - def force_bottle? - include?("--force-bottle") - end - def cc value "cc" end diff --git a/Library/Homebrew/fetch.rb b/Library/Homebrew/fetch.rb index 145a600974..b2e04554b0 100644 --- a/Library/Homebrew/fetch.rb +++ b/Library/Homebrew/fetch.rb @@ -5,7 +5,7 @@ module Homebrew module_function def fetch_bottle?(f) - return true if ARGV.force_bottle? && f.bottle + return true if Homebrew.args.force_bottle && f.bottle return false unless f.bottle && f.pour_bottle? return false if Homebrew.args.build_formula_from_source?(f) return false unless f.bottle.compatible_cellar? diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 4853d1e7ce..6885971ed4 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -51,7 +51,7 @@ class FormulaInstaller @only_deps = false @build_from_source = Homebrew.args.build_from_source @build_bottle = false - @force_bottle = ARGV.force_bottle? + @force_bottle = Homebrew.args.force_bottle @include_test = ARGV.include?("--include-test") @interactive = false @git = false diff --git a/Library/Homebrew/software_spec.rb b/Library/Homebrew/software_spec.rb index 03cdd2762b..3dc7e2f9a4 100644 --- a/Library/Homebrew/software_spec.rb +++ b/Library/Homebrew/software_spec.rb @@ -95,7 +95,7 @@ class SoftwareSpec def bottled? bottle_specification.tag?(Utils::Bottles.tag) && \ - (bottle_specification.compatible_cellar? || ARGV.force_bottle?) + (bottle_specification.compatible_cellar? || Homebrew.args.force_bottle) end def bottle(disable_type = nil, disable_reason = nil, &block) diff --git a/Library/Homebrew/test/cask/cmd/upgrade_spec.rb b/Library/Homebrew/test/cask/cmd/upgrade_spec.rb index 87fbaf3bba..8f3ddfed67 100644 --- a/Library/Homebrew/test/cask/cmd/upgrade_spec.rb +++ b/Library/Homebrew/test/cask/cmd/upgrade_spec.rb @@ -97,152 +97,6 @@ describe Cask::Cmd::Upgrade, :cask do end end - context "dry run upgrade" do - let(:installed) { - [ - "outdated/local-caffeine", - "outdated/local-transmission", - "outdated/auto-updates", - "outdated/version-latest", - ] - } - - before do - installed.each { |cask| Cask::Cmd::Install.run(cask) } - - allow_any_instance_of(described_class).to receive(:verbose?).and_return(true) - end - - describe 'without --greedy it ignores the Casks with "version latest" or "auto_updates true"' do - it "would update all the installed Casks when no token is provided" do - local_caffeine = Cask::CaskLoader.load("local-caffeine") - local_caffeine_path = Cask::Config.global.appdir.join("Caffeine.app") - local_transmission = Cask::CaskLoader.load("local-transmission") - local_transmission_path = Cask::Config.global.appdir.join("Transmission.app") - - expect(local_caffeine).to be_installed - expect(local_caffeine_path).to be_a_directory - expect(local_caffeine.versions).to include("1.2.2") - - expect(local_transmission).to be_installed - expect(local_transmission_path).to be_a_directory - expect(local_transmission.versions).to include("2.60") - - described_class.run("--dry-run") - - expect(local_caffeine).to be_installed - expect(local_caffeine_path).to be_a_directory - expect(local_caffeine.versions).to include("1.2.2") - expect(local_caffeine.versions).not_to include("1.2.3") - - expect(local_transmission).to be_installed - expect(local_transmission_path).to be_a_directory - expect(local_transmission.versions).to include("2.60") - expect(local_transmission.versions).not_to include("2.61") - end - - it "would update only the Casks specified in the command line" do - local_caffeine = Cask::CaskLoader.load("local-caffeine") - local_caffeine_path = Cask::Config.global.appdir.join("Caffeine.app") - local_transmission = Cask::CaskLoader.load("local-transmission") - local_transmission_path = Cask::Config.global.appdir.join("Transmission.app") - - expect(local_caffeine).to be_installed - expect(local_caffeine_path).to be_a_directory - expect(local_caffeine.versions).to include("1.2.2") - - expect(local_transmission).to be_installed - expect(local_transmission_path).to be_a_directory - expect(local_transmission.versions).to include("2.60") - - described_class.run("--dry-run", "local-caffeine") - - expect(local_caffeine).to be_installed - expect(local_caffeine_path).to be_a_directory - expect(local_caffeine.versions).to include("1.2.2") - expect(local_caffeine.versions).not_to include("1.2.3") - - expect(local_transmission).to be_installed - expect(local_transmission_path).to be_a_directory - expect(local_transmission.versions).to include("2.60") - expect(local_transmission.versions).not_to include("2.61") - end - end - - describe "with --greedy it checks additional Casks" do - it 'would include the Casks with "auto_updates true" or "version latest"' do - local_caffeine = Cask::CaskLoader.load("local-caffeine") - local_caffeine_path = Cask::Config.global.appdir.join("Caffeine.app") - auto_updates = Cask::CaskLoader.load("auto-updates") - auto_updates_path = Cask::Config.global.appdir.join("MyFancyApp.app") - local_transmission = Cask::CaskLoader.load("local-transmission") - local_transmission_path = Cask::Config.global.appdir.join("Transmission.app") - version_latest = Cask::CaskLoader.load("version-latest") - version_latest_path_1 = Cask::Config.global.appdir.join("Caffeine Mini.app") - version_latest_path_2 = Cask::Config.global.appdir.join("Caffeine Pro.app") - - expect(local_caffeine).to be_installed - expect(local_caffeine_path).to be_a_directory - expect(local_caffeine.versions).to include("1.2.2") - - expect(auto_updates).to be_installed - expect(auto_updates_path).to be_a_directory - expect(auto_updates.versions).to include("2.57") - - expect(local_transmission).to be_installed - expect(local_transmission_path).to be_a_directory - expect(local_transmission.versions).to include("2.60") - - expect(version_latest).to be_installed - expect(version_latest_path_1).to be_a_directory - expect(version_latest.versions).to include("latest") - - described_class.run("--greedy", "--dry-run") - - expect(local_caffeine).to be_installed - expect(local_caffeine_path).to be_a_directory - expect(local_caffeine.versions).to include("1.2.2") - expect(local_caffeine.versions).not_to include("1.2.3") - - expect(auto_updates).to be_installed - expect(auto_updates_path).to be_a_directory - expect(auto_updates.versions).to include("2.57") - expect(auto_updates.versions).not_to include("2.61") - - expect(local_transmission).to be_installed - expect(local_transmission_path).to be_a_directory - expect(local_transmission.versions).to include("2.60") - expect(local_transmission.versions).not_to include("2.61") - - expect(version_latest).to be_installed - expect(version_latest_path_2).to be_a_directory - end - - it 'does not include the Casks with "auto_updates true" when the version did not change' do - cask = Cask::CaskLoader.load("auto-updates") - cask_path = cask.config.appdir.join("MyFancyApp.app") - - expect(cask).to be_installed - expect(cask_path).to be_a_directory - expect(cask.versions).to include("2.57") - - described_class.run("--dry-run", "auto-updates", "--greedy") - - expect(cask).to be_installed - expect(cask_path).to be_a_directory - expect(cask.versions).to include("2.57") - expect(cask.versions).not_to include("2.61") - - described_class.run("--dry-run", "auto-updates", "--greedy") - - expect(cask).to be_installed - expect(cask_path).to be_a_directory - expect(cask.versions).to include("2.57") - expect(cask.versions).not_to include("2.61") - end - end - end - context "failed upgrade" do let(:installed) { [