diff --git a/Library/Homebrew/cli/args.rb b/Library/Homebrew/cli/args.rb index 88e6daaf06..4879c4f6bc 100644 --- a/Library/Homebrew/cli/args.rb +++ b/Library/Homebrew/cli/args.rb @@ -9,9 +9,12 @@ module Homebrew # undefine tap to allow --tap argument undef tap - def initialize(argv:) + def initialize super - @argv = argv + + self[:remaining] = [] + self[:cmdline_args] = ARGV_WITHOUT_MONKEY_PATCHING.dup + @args_parsed = false @processed_options = [] end @@ -59,8 +62,6 @@ module Homebrew end def named - return [] if remaining.nil? - remaining end @@ -164,6 +165,20 @@ module Homebrew !(HEAD? || devel?) end + # Whether a given formula should be built from source during the current + # installation run. + def build_formula_from_source?(f) + return false if !build_from_source && !build_bottle + + formulae.any? { |args_f| args_f.full_name == f.full_name } + end + + def build_from_source + return true if args_parsed && (build_from_source? || s?) + + cmdline_args.include?("--build-from-source") || cmdline_args.include?("-s") + end + private def downcased_unique_named @@ -206,12 +221,6 @@ module Homebrew cmdline_args.include?("--build-bottle") end - def build_from_source - return true if args_parsed && (build_from_source? || s?) - - cmdline_args.include?("--build-from-source") || cmdline_args.include?("-s") - end - def spec(default = :stable) if head :head diff --git a/Library/Homebrew/cli/parser.rb b/Library/Homebrew/cli/parser.rb index e3e59de199..b5d6941d30 100644 --- a/Library/Homebrew/cli/parser.rb +++ b/Library/Homebrew/cli/parser.rb @@ -37,11 +37,10 @@ module Homebrew } end - def initialize(args = ARGV, &block) + def initialize(&block) @parser = OptionParser.new - @args = Homebrew::CLI::Args.new(argv: ARGV_WITHOUT_MONKEY_PATCHING) - @args[:remaining] = [] - @args[:cmdline_args] = args.dup + @args = Homebrew::CLI::Args.new + @constraints = [] @conflicts = [] @switch_sources = {} @@ -259,7 +258,7 @@ module Homebrew end def option_passed?(name) - @args.respond_to?(name) || @args.respond_to?("#{name}?") + @args[name.to_sym] || @args["#{name}?".to_sym] end def wrap_option_desc(desc) diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb index f2372e3c57..018c875058 100644 --- a/Library/Homebrew/extend/ARGV.rb +++ b/Library/Homebrew/extend/ARGV.rb @@ -40,18 +40,6 @@ module HomebrewArgvExtension arch&.to_sym end - def build_from_source? - switch?("s") || include?("--build-from-source") - end - - # Whether a given formula should be built from source during the current - # installation run. - def build_formula_from_source?(f) - return false if !build_from_source? && !build_bottle? - - formulae.any? { |argv_f| argv_f.full_name == f.full_name } - end - def force_bottle? include?("--force-bottle") end diff --git a/Library/Homebrew/fetch.rb b/Library/Homebrew/fetch.rb index 4d9a13719d..145a600974 100644 --- a/Library/Homebrew/fetch.rb +++ b/Library/Homebrew/fetch.rb @@ -7,7 +7,7 @@ module Homebrew def fetch_bottle?(f) return true if ARGV.force_bottle? && f.bottle return false unless f.bottle && f.pour_bottle? - return false if ARGV.build_formula_from_source?(f) + return false if Homebrew.args.build_formula_from_source?(f) return false unless f.bottle.compatible_cellar? true diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index b5ba33d8de..4853d1e7ce 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -49,7 +49,7 @@ class FormulaInstaller @show_header = false @ignore_deps = false @only_deps = false - @build_from_source = ARGV.build_from_source? + @build_from_source = Homebrew.args.build_from_source @build_bottle = false @force_bottle = ARGV.force_bottle? @include_test = ARGV.include?("--include-test") @@ -97,7 +97,7 @@ class FormulaInstaller return false if !formula.bottled? && !formula.local_bottle_path return true if force_bottle? - return false if build_from_source? || build_bottle? || interactive? + return false if Homebrew.args.build_from_source || build_bottle? || interactive? return false if ARGV.cc return false unless options.empty? return false if formula.bottle_disabled? @@ -128,7 +128,7 @@ class FormulaInstaller def install_bottle_for?(dep, build) return pour_bottle? if dep == formula - return false if ARGV.build_formula_from_source?(dep) + return false if Homebrew.args.build_formula_from_source?(dep) return false unless dep.bottle && dep.pour_bottle? return false unless build.used_options.empty? return false unless dep.bottle.compatible_cellar? @@ -591,7 +591,7 @@ class FormulaInstaller fi.options |= Tab.remap_deprecated_options(df.deprecated_options, dep.options) fi.options |= inherited_options fi.options &= df.options - fi.build_from_source = ARGV.build_formula_from_source?(df) + fi.build_from_source = Homebrew.args.build_formula_from_source?(df) fi.force_bottle = false fi.verbose = verbose? fi.quiet = quiet? diff --git a/Library/Homebrew/global.rb b/Library/Homebrew/global.rb index bd8f745f03..1fc0cb0a54 100644 --- a/Library/Homebrew/global.rb +++ b/Library/Homebrew/global.rb @@ -86,7 +86,7 @@ module Homebrew end def args - @args ||= CLI::Args.new(argv: ARGV) + @args ||= CLI::Args.new end def messages