Merge pull request #13398 from apainintheneck/remove-required-for

Remove unused parser option required_for
This commit is contained in:
Mike McQuaid 2022-06-09 10:18:04 +01:00 committed by GitHub
commit 39f30d75d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 32 deletions

View File

@ -148,7 +148,7 @@ module Homebrew
generate_banner generate_banner
end end
def switch(*names, description: nil, replacement: nil, env: nil, required_for: nil, depends_on: nil, def switch(*names, description: nil, replacement: nil, env: nil, depends_on: nil,
method: :on, hidden: false) method: :on, hidden: false)
global_switch = names.first.is_a?(Symbol) global_switch = names.first.is_a?(Symbol)
return if global_switch return if global_switch
@ -167,7 +167,7 @@ module Homebrew
end end
names.each do |name| names.each do |name|
set_constraints(name, required_for: required_for, depends_on: depends_on) set_constraints(name, depends_on: depends_on)
end end
env_value = env?(env) env_value = env?(env)
@ -204,8 +204,7 @@ module Homebrew
end end
end end
def flag(*names, description: nil, replacement: nil, required_for: nil, def flag(*names, description: nil, replacement: nil, depends_on: nil, hidden: false)
depends_on: nil, hidden: false)
required, flag_type = if names.any? { |name| name.end_with? "=" } required, flag_type = if names.any? { |name| name.end_with? "=" }
[OptionParser::REQUIRED_ARGUMENT, :required_flag] [OptionParser::REQUIRED_ARGUMENT, :required_flag]
else else
@ -226,7 +225,7 @@ module Homebrew
end end
names.each do |name| names.each do |name|
set_constraints(name, required_for: required_for, depends_on: depends_on) set_constraints(name, depends_on: depends_on)
end end
end end
@ -506,31 +505,25 @@ module Homebrew
Formatter.format_help_text(desc, width: OPTION_DESC_WIDTH).split("\n") Formatter.format_help_text(desc, width: OPTION_DESC_WIDTH).split("\n")
end end
def set_constraints(name, depends_on:, required_for:) def set_constraints(name, depends_on:)
secondary = option_to_name(name)
unless required_for.nil?
primary = option_to_name(required_for)
@constraints << [primary, secondary, :mandatory]
end
return if depends_on.nil? return if depends_on.nil?
primary = option_to_name(depends_on) primary = option_to_name(depends_on)
@constraints << [primary, secondary, :optional] secondary = option_to_name(name)
@constraints << [primary, secondary]
end end
def check_constraints def check_constraints
@constraints.each do |primary, secondary, constraint_type| @constraints.each do |primary, secondary|
primary_passed = option_passed?(primary) primary_passed = option_passed?(primary)
secondary_passed = option_passed?(secondary) secondary_passed = option_passed?(secondary)
next if !secondary_passed || (primary_passed && secondary_passed)
primary = name_to_option(primary) primary = name_to_option(primary)
secondary = name_to_option(secondary) secondary = name_to_option(secondary)
if :mandatory.equal?(constraint_type) && primary_passed && !secondary_passed raise OptionConstraintError.new(primary, secondary, missing: true)
raise OptionConstraintError.new(primary, secondary)
end
raise OptionConstraintError.new(primary, secondary, missing: true) if secondary_passed && !primary_passed
end end
end end

View File

@ -164,21 +164,15 @@ describe Homebrew::CLI::Parser do
subject(:parser) { subject(:parser) {
described_class.new do described_class.new do
flag "--flag1=" flag "--flag1="
flag "--flag2=", depends_on: "--flag1="
flag "--flag3=" flag "--flag3="
flag "--flag2=", required_for: "--flag1="
flag "--flag4=", depends_on: "--flag3="
conflicts "--flag1=", "--flag3=" conflicts "--flag1=", "--flag3="
end end
} }
it "raises exception on required_for constraint violation" do
expect { parser.parse(["--flag1=flag1"]) }.to raise_error(Homebrew::CLI::OptionConstraintError)
end
it "raises exception on depends_on constraint violation" do it "raises exception on depends_on constraint violation" do
expect { parser.parse(["--flag2=flag2"]) }.to raise_error(Homebrew::CLI::OptionConstraintError) expect { parser.parse(["--flag2=flag2"]) }.to raise_error(Homebrew::CLI::OptionConstraintError)
expect { parser.parse(["--flag4=flag4"]) }.to raise_error(Homebrew::CLI::OptionConstraintError)
end end
it "raises exception for conflict violation" do it "raises exception for conflict violation" do
@ -216,20 +210,14 @@ describe Homebrew::CLI::Parser do
described_class.new do described_class.new do
switch "-a", "--switch-a", env: "switch_a" switch "-a", "--switch-a", env: "switch_a"
switch "-b", "--switch-b", env: "switch_b" switch "-b", "--switch-b", env: "switch_b"
switch "--switch-c", required_for: "--switch-a" switch "--switch-c", depends_on: "--switch-a"
switch "--switch-d", depends_on: "--switch-b"
conflicts "--switch-a", "--switch-b" conflicts "--switch-a", "--switch-b"
end end
} }
it "raises exception on required_for constraint violation" do
expect { parser.parse(["--switch-a"]) }.to raise_error(Homebrew::CLI::OptionConstraintError)
end
it "raises exception on depends_on constraint violation" do it "raises exception on depends_on constraint violation" do
expect { parser.parse(["--switch-c"]) }.to raise_error(Homebrew::CLI::OptionConstraintError) expect { parser.parse(["--switch-c"]) }.to raise_error(Homebrew::CLI::OptionConstraintError)
expect { parser.parse(["--switch-d"]) }.to raise_error(Homebrew::CLI::OptionConstraintError)
end end
it "raises exception for conflict violation" do it "raises exception for conflict violation" do