diff --git a/Library/Homebrew/software_spec.rb b/Library/Homebrew/software_spec.rb index 390f31e174..867d10393f 100644 --- a/Library/Homebrew/software_spec.rb +++ b/Library/Homebrew/software_spec.rb @@ -11,6 +11,12 @@ require 'patch' class SoftwareSpec extend Forwardable + PREDEFINED_OPTIONS = { + :universal => Option.new("universal", "Build a universal binary"), + :cxx11 => Option.new("c++11", "Build using C++11 mode"), + "32-bit" => Option.new("32-bit", "Build 32-bit only"), + } + attr_reader :name, :owner attr_reader :build, :resources, :patches, :options attr_reader :dependency_collector @@ -75,20 +81,18 @@ class SoftwareSpec options.include?(name) end - def option name, description=nil - name = 'c++11' if name == :cxx11 - name = name.to_s if Symbol === name - raise ArgumentError, "option name is required" if name.empty? - raise ArgumentError, "options should not start with dashes" if name.start_with?("-") - - description ||= case name - when "universal" then "Build a universal binary" - when "32-bit" then "Build 32-bit only" - when "c++11" then "Build using C++11 mode" - else "" + def option(name, description="") + opt = PREDEFINED_OPTIONS.fetch(name) do + if Symbol === name + opoo "Passing arbitrary symbols to `option` is deprecated: #{name.inspect}" + puts "Symbols are reserved for future use, please pass a string instead" + name = name.to_s end - - options << Option.new(name, description) + raise ArgumentError, "option name is required" if name.empty? + raise ArgumentError, "options should not start with dashes" if name.start_with?("-") + Option.new(name, description) + end + options << opt end def depends_on spec diff --git a/Library/Homebrew/test/test_software_spec.rb b/Library/Homebrew/test/test_software_spec.rb index 702d2c5819..1306a92b97 100644 --- a/Library/Homebrew/test/test_software_spec.rb +++ b/Library/Homebrew/test/test_software_spec.rb @@ -55,11 +55,6 @@ class SoftwareSpecTests < Homebrew::TestCase assert_raises(ArgumentError) { @spec.option("") } end - def test_option_accepts_symbols - @spec.option(:foo) - assert @spec.option_defined?("foo") - end - def test_cxx11_option_special_case @spec.option(:cxx11) assert @spec.option_defined?("c++11")