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