cli_parser: Add support for short flag options
This commit is contained in:
parent
c573408a65
commit
f7ec07680c
@ -76,20 +76,24 @@ module Homebrew
|
||||
end
|
||||
end
|
||||
|
||||
def flag(name, description: nil, required_for: nil, depends_on: nil)
|
||||
if name.end_with? "="
|
||||
def flag(*names, description: nil, required_for: nil, depends_on: nil)
|
||||
if names.any? { |name| name.end_with? "=" }
|
||||
required = OptionParser::REQUIRED_ARGUMENT
|
||||
name.chomp! "="
|
||||
else
|
||||
required = OptionParser::OPTIONAL_ARGUMENT
|
||||
end
|
||||
description = option_to_description(name) if description.nil?
|
||||
process_option(name, description)
|
||||
@parser.on(name, *wrap_option_desc(description), required) do |option_value|
|
||||
Homebrew.args[option_to_name(name)] = option_value
|
||||
names.map! { |name| name.chomp "=" }
|
||||
description = option_to_description(*names) if description.nil?
|
||||
process_option(*names, description)
|
||||
@parser.on(*names, *wrap_option_desc(description), required) do |option_value|
|
||||
names.each do |name|
|
||||
Homebrew.args[option_to_name(name)] = option_value
|
||||
end
|
||||
end
|
||||
|
||||
set_constraints(name, required_for: required_for, depends_on: depends_on)
|
||||
names.each do |name|
|
||||
set_constraints(name, required_for: required_for, depends_on: depends_on)
|
||||
end
|
||||
end
|
||||
|
||||
def conflicts(*options)
|
||||
|
||||
@ -76,6 +76,20 @@ describe Homebrew::CLI::Parser do
|
||||
end
|
||||
end
|
||||
|
||||
describe "test short flag options" do
|
||||
subject(:parser) {
|
||||
described_class.new do
|
||||
flag "-f", "--filename=", description: "Name of the file"
|
||||
end
|
||||
}
|
||||
|
||||
it "parses a short flag option with its argument" do
|
||||
parser.parse(["--filename=random.txt"])
|
||||
expect(Homebrew.args.filename).to eq "random.txt"
|
||||
expect(Homebrew.args.f).to eq "random.txt"
|
||||
end
|
||||
end
|
||||
|
||||
describe "test constraints for flag options" do
|
||||
subject(:parser) {
|
||||
described_class.new do
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user