diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index a1b70812ac..0321810bd1 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -2119,6 +2119,8 @@ class Formula # rubocop:disable Metrics/ClassLength "uses_from_macos" => uses_from_macos_elements.uniq, "requirements" => [], "conflicts_with" => conflicts.map(&:name), + "conflicts_with_reasons" => conflicts.map(&:reason), + "link_overwrite" => self.class.link_overwrite_paths.to_a, "caveats" => caveats&.gsub(HOMEBREW_PREFIX, HOMEBREW_PREFIX_PLACEHOLDER), "installed" => [], "linked_keg" => linked_version&.to_s, diff --git a/Library/Homebrew/formulary.rb b/Library/Homebrew/formulary.rb index c906b4ea97..fa7adbf86f 100644 --- a/Library/Homebrew/formulary.rb +++ b/Library/Homebrew/formulary.rb @@ -244,6 +244,14 @@ module Formulary depends_on req_name => req_tags end + json_formula["conflicts_with"].each_with_index do |conflict, index| + conflicts_with conflict, because: json_formula.dig("conflicts_with_reasons", index) + end + + json_formula["link_overwrite"]&.each do |overwrite_path| + link_overwrite overwrite_path + end + def install raise "Cannot build from source from abstract formula." end diff --git a/Library/Homebrew/test/formulary_spec.rb b/Library/Homebrew/test/formulary_spec.rb index 3a101c1f93..910931c86f 100644 --- a/Library/Homebrew/test/formulary_spec.rb +++ b/Library/Homebrew/test/formulary_spec.rb @@ -253,6 +253,9 @@ describe Formulary do "contexts" => ["build"], }, ], + "conflicts_with" => ["conflicting_formula"], + "conflicts_with_reasons" => ["it does"], + "link_overwrite" => ["bin/abc"], "caveats" => "example caveat string", }.merge(extra_items), } @@ -330,6 +333,10 @@ describe Formulary do expect(req.version).to eq "1.0" expect(req.tags).to eq [:build] + expect(formula.conflicts.map(&:name)).to include "conflicting_formula" + expect(formula.conflicts.map(&:reason)).to include "it does" + expect(formula.class.link_overwrite_paths).to include "bin/abc" + expect(formula.caveats).to eq "example caveat string" expect {