cli_parser: Add support for short flag options
This commit is contained in:
parent
c573408a65
commit
f7ec07680c
@ -76,21 +76,25 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def flag(name, description: nil, required_for: nil, depends_on: nil)
|
def flag(*names, description: nil, required_for: nil, depends_on: nil)
|
||||||
if name.end_with? "="
|
if names.any? { |name| name.end_with? "=" }
|
||||||
required = OptionParser::REQUIRED_ARGUMENT
|
required = OptionParser::REQUIRED_ARGUMENT
|
||||||
name.chomp! "="
|
|
||||||
else
|
else
|
||||||
required = OptionParser::OPTIONAL_ARGUMENT
|
required = OptionParser::OPTIONAL_ARGUMENT
|
||||||
end
|
end
|
||||||
description = option_to_description(name) if description.nil?
|
names.map! { |name| name.chomp "=" }
|
||||||
process_option(name, description)
|
description = option_to_description(*names) if description.nil?
|
||||||
@parser.on(name, *wrap_option_desc(description), required) do |option_value|
|
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
|
Homebrew.args[option_to_name(name)] = option_value
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
names.each do |name|
|
||||||
set_constraints(name, required_for: required_for, depends_on: depends_on)
|
set_constraints(name, required_for: required_for, depends_on: depends_on)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def conflicts(*options)
|
def conflicts(*options)
|
||||||
@conflicts << options.map { |option| option_to_name(option) }
|
@conflicts << options.map { |option| option_to_name(option) }
|
||||||
|
|||||||
@ -76,6 +76,20 @@ describe Homebrew::CLI::Parser do
|
|||||||
end
|
end
|
||||||
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
|
describe "test constraints for flag options" do
|
||||||
subject(:parser) {
|
subject(:parser) {
|
||||||
described_class.new do
|
described_class.new do
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user