From cacd7194f6c4818644629842415f9d752d63bd3e Mon Sep 17 00:00:00 2001 From: Bo Anderson Date: Mon, 20 Feb 2023 16:08:38 +0000 Subject: [PATCH] Support `link_overwrite` and `conflicts_with` in API --- Library/Homebrew/formula.rb | 2 ++ Library/Homebrew/formulary.rb | 8 ++++++++ Library/Homebrew/test/formulary_spec.rb | 7 +++++++ 3 files changed, 17 insertions(+) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index a1b70812ac69f..0321810bd1133 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -2119,6 +2119,8 @@ def to_hash "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 c906b4ea9709c..fa7adbf86f33f 100644 --- a/Library/Homebrew/formulary.rb +++ b/Library/Homebrew/formulary.rb @@ -244,6 +244,14 @@ def self.load_formula_from_api(name, flags:) 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 3a101c1f93611..910931c86ffbd 100644 --- a/Library/Homebrew/test/formulary_spec.rb +++ b/Library/Homebrew/test/formulary_spec.rb @@ -253,6 +253,9 @@ def formula_json_contents(extra_items = {}) "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 @@ def formula_json_contents(extra_items = {}) 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 {