Skip to content
Snippets Groups Projects
Unverified Commit a198b0ef authored by Markus Reiter's avatar Markus Reiter Committed by GitHub
Browse files

Merge pull request #5628 from reitermarkus/conflicts-with

Refactor `ConflictsWith` to be a `DelegateClass(Hash)`.
parents d18bab04 d22c2eca
No related branches found
No related tags found
No related merge requests found
......@@ -133,7 +133,7 @@ module Cask
end,
"caveats" => caveats,
"depends_on" => depends_on,
"conflicts_with" => conflicts_with.to_h,
"conflicts_with" => conflicts_with,
"container" => container,
"auto_updates" => auto_updates,
}
......
require "extend/hash_validator"
using HashValidator
module Cask
class DSL
class ConflictsWith
VALID_KEYS = Set.new [
class ConflictsWith < DelegateClass(Hash)
VALID_KEYS = [
:formula,
:cask,
:macos,
:arch,
:x11,
:java,
]
attr_reader *VALID_KEYS
def initialize(pairs = {})
@pairs = pairs
].freeze
VALID_KEYS.each do |key|
instance_variable_set("@#{key}", Set.new)
end
def initialize(**pairs)
pairs.assert_valid_keys!(*VALID_KEYS)
pairs.each do |key, value|
raise "invalid conflicts_with key: '#{key.inspect}'" unless VALID_KEYS.include?(key)
super(Hash[pairs.map { |k, v| [k, Set.new([*v])] }])
instance_variable_set("@#{key}", instance_variable_get("@#{key}").merge([*value]))
end
self.default = Set.new
end
def to_h
Hash[VALID_KEYS.map { |key| [key, instance_variable_get("@#{key}").to_a] }]
def to_json(generator)
Hash[map { |k, v| [k, v.to_a] }].to_json(generator)
end
end
end
......
......@@ -104,7 +104,7 @@ module Cask
def check_conflicts
return unless @cask.conflicts_with
@cask.conflicts_with.cask.each do |conflicting_cask|
@cask.conflicts_with[:cask].each do |conflicting_cask|
begin
conflicting_cask = CaskLoader.load(conflicting_cask)
if conflicting_cask.installed?
......
......@@ -401,7 +401,7 @@ describe Cask::DSL, :cask do
let(:token) { "with-conflicts-with" }
it "allows conflicts_with stanza to be specified" do
expect(cask.conflicts_with.formula).not_to be nil
expect(cask.conflicts_with[:formula]).to be_empty
end
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment