Sha256: d4e526d8c820f8f142c26357df56b749e5b7e770e0fad8a62fbf9a6f80ad94dc

Contents?: true

Size: 1.65 KB

Versions: 19

Compression:

Stored size: 1.65 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 "--ignore"
              selectors << { ignore: true }
            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 "--ignore"
                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

19 entries across 19 versions & 1 rubygems

Version Path
pact_broker-client-1.56.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.55.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.54.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.53.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.52.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.51.2 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.51.1 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.51.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.50.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.49.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.48.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.47.1 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.47.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.46.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.45.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.44.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.43.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.42.0 lib/pact_broker/client/cli/version_selector_options_parser.rb
pact_broker-client-1.41.0 lib/pact_broker/client/cli/version_selector_options_parser.rb