cli_parser: Add support for short flag options

This commit is contained in:
Gautham Goli 2018-10-25 21:43:49 +05:30
parent c573408a65
commit f7ec07680c
No known key found for this signature in database
GPG Key ID: 6A9ABBC284468364
2 changed files with 26 additions and 8 deletions

View File

@ -76,21 +76,25 @@ 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|
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
names.each do |name|
set_constraints(name, required_for: required_for, depends_on: depends_on)
end
end
def conflicts(*options)
@conflicts << options.map { |option| option_to_name(option) }

View File

@ -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