Sha256: 0a70e80cc295ee1ffd8ba70533bd59868e7169c39671e4bc70109447a7286882

Contents?: true

Size: 1.08 KB

Versions: 3

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true

module Theme
  module Conversions
    class BaseGlob
      class << self
        def register(parser)
          parser.accept(self) { |_val| convert(parser) }
        end

        def convert(parser)
          argv = parser.default_argv
          option_index = argv.index { |v| options.include?(v) }

          return [] if option_index.nil?

          start_index = option_index + 1
          option_by_key = options_map(parser)
          values = []

          argv[start_index..-1].each do |value|
            return values unless option_by_key[value].nil?
            values << value
          end

          values
        end

        def options
          raise "`#{self.class.name}#options` must be defined"
        end

        private

        def options_map(parser)
          map = {}
          parser.top.list.each do |option|
            map[option.short.first] = option
            map[option.long.first] = option
          end
          map
        end

        def parameter?(value)
          value.start_with?("-")
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
shopify-cli-2.14.0 lib/project_types/theme/conversions/base_glob.rb
shopify-cli-2.13.0 lib/project_types/theme/conversions/base_glob.rb
shopify-cli-2.12.0 lib/project_types/theme/conversions/base_glob.rb