diff --git a/Library/Homebrew/dev-cmd/bottle.rb b/Library/Homebrew/dev-cmd/bottle.rb index c15d403fc72ce7b471947de9ea18cc94c039da42..a521c53308004d62a875d08a643d978e3407a4e0 100644 --- a/Library/Homebrew/dev-cmd/bottle.rb +++ b/Library/Homebrew/dev-cmd/bottle.rb @@ -284,8 +284,13 @@ module Homebrew end ignores = [] - if f.deps.any? { |dep| dep.name == "go" } - ignores << %r{#{Regexp.escape(HOMEBREW_CELLAR)}/go/[\d\.]+/libexec} + any_go_deps = f.deps.any? do |dep| + dep.name =~ Version.formula_optionally_versioned_regex(:go) + end + if any_go_deps + go_regex = + Version.formula_optionally_versioned_regex(:go, full: false) + ignores << %r{#{Regexp.escape(HOMEBREW_CELLAR)}/#{go_regex}/[\d\.]+/libexec} end relocatable = true diff --git a/Library/Homebrew/extend/os/mac/formula_cellar_checks.rb b/Library/Homebrew/extend/os/mac/formula_cellar_checks.rb index f520748d6ab7750cb570d64af0b3e4c98cc41449..eb16b93d81d1099fe206c986066c670cd1c0f61c 100644 --- a/Library/Homebrew/extend/os/mac/formula_cellar_checks.rb +++ b/Library/Homebrew/extend/os/mac/formula_cellar_checks.rb @@ -7,7 +7,7 @@ module FormulaCellarChecks formula.name.start_with?(formula_name) end - return if formula.name =~ /^php(@?\d+\.?\d*?)?$/ + return if formula.name =~ Version.formula_optionally_versioned_regex(:php) return if MacOS.version < :mavericks && formula.name.start_with?("postgresql") return if MacOS.version < :yosemite && formula.name.start_with?("memcached") diff --git a/Library/Homebrew/rubocops/lines_cop.rb b/Library/Homebrew/rubocops/lines_cop.rb index 141ab6fdf39286fd5547ee728ab77f01325bcf50..d1798154685ea9290c5c262af3a971261b974ebc 100644 --- a/Library/Homebrew/rubocops/lines_cop.rb +++ b/Library/Homebrew/rubocops/lines_cop.rb @@ -290,7 +290,7 @@ module RuboCop find_every_method_call_by_name(body_node, :system).each do |method_node| # Skip Kibana: npm cache edge (see formula for more details) - next if @formula_name =~ /^kibana(\@\d+(\.\d+)?)?$/i + next if @formula_name =~ /^kibana(@\d[\d.]*)?$/ first_param, second_param = parameters(method_node) next if !node_equals?(first_param, "npm") || !node_equals?(second_param, "install") diff --git a/Library/Homebrew/test/version_spec.rb b/Library/Homebrew/test/version_spec.rb index c80998e528ca0a28b2c3ef1886529f0095e90477..7c61ffdf20913c53d34c50ee7dab364790fa2757 100644 --- a/Library/Homebrew/test/version_spec.rb +++ b/Library/Homebrew/test/version_spec.rb @@ -1,5 +1,11 @@ require "version" +describe Version do + specify ".formula_optionally_versioned_regex" do + expect(described_class.formula_optionally_versioned_regex("foo")).to match("foo@1.2") + end +end + describe Version::Token do specify "#inspect" do expect(described_class.new("foo").inspect).to eq('#<Version::Token "foo">') diff --git a/Library/Homebrew/version.rb b/Library/Homebrew/version.rb index b6c0a79abcba2b2d78fc42d5c0a45f516c41162f..44253b17a1f190722a05a7e7526f2cc88b13717d 100644 --- a/Library/Homebrew/version.rb +++ b/Library/Homebrew/version.rb @@ -3,6 +3,10 @@ require "version/null" class Version include Comparable + def self.formula_optionally_versioned_regex(name, full: true) + /#{"^" if full}#{Regexp.escape(name)}(@\d[\d.]*)?#{"$" if full}/ + end + class Token include Comparable