Sha256: 541cf253e8496682316dc5ae759b880901c1501aa50450384f4cda879291f233

Contents?: true

Size: 1.5 KB

Versions: 48

Compression:

Stored size: 1.5 KB

Contents

# frozen_string_literal: true

module PactBroker
  module Client
    module CLI
      class VersionSelectorOptionsParser

        def self.call words
          selectors = []
          previous_option = nil
          split_equals(words).each do | word |
            case word
            when "--pacticipant", "-a"
              selectors << {}
            when "--latest", "-l"
              selectors << { pacticipant: nil } if selectors.empty?
              selectors.last[:latest] = true
            when /^\-/
              nil
            else
              case previous_option
              when "--pacticipant", "-a"
                selectors.last[:pacticipant] = word
              when "--version", "-e"
                selectors << { pacticipant: nil } if selectors.empty?
                selectors.last[:version] = word
              when "--latest", "-l"
                selectors << { pacticipant: nil } if selectors.empty?
                selectors.last[:tag] = word
              when "--all"
                selectors << { pacticipant: nil } if selectors.empty?
                selectors.last[:tag] = word
              end
            end
            previous_option = word if word.start_with?("-")
          end
          selectors
        end

        def self.split_equals(words)
          words.flat_map do |word|
            if word.start_with?("-") && word.include?("=")
              word.split('=', 2)
            else
              word
            end
          end
        end
      end
    end
  end
end

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
pact_broker-client-1.27.2 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.27.1 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.27.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.26.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.25.1 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.25.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.24.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.23.0 lib/pact_broker/client/cli/version_selector_options_parser.rb