Sha256: 5729ad97460eb2956239ed5dd4cfcf0d63d5e79b7eded90cbb19ffe49b1464e6

Contents?: true

Size: 940 Bytes

Versions: 12

Compression:

Stored size: 940 Bytes

Contents

require "shopify_cli"

module ShopifyCLI
  class Form
    class << self
      def ask(ctx, args, flags)
        attrs = {}
        (@positional_arguments || []).each { |name| attrs[name] = args.shift }
        return nil if attrs.any? { |_k, v| v.nil? }
        (@flag_arguments || []).each { |arg| attrs[arg] = flags[arg] }
        form = new(ctx, args, attrs)
        begin
          form.ask
          form
        rescue ShopifyCLI::Abort => err
          ctx.puts(err.message)
          nil
        end
      end

      def positional_arguments(*args)
        @positional_arguments = args
        attr_accessor(*args)
      end

      def flag_arguments(*args)
        @flag_arguments = args
        attr_accessor(*args)
      end
    end

    attr_accessor :ctx, :xargs

    def initialize(ctx, xargs, attributes)
      @ctx = ctx
      @xargs = xargs
      attributes.each { |k, v| send("#{k}=", v) unless v.nil? }
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
shopify-cli-2.7.3 lib/shopify_cli/form.rb
shopify-cli-2.7.2 lib/shopify_cli/form.rb
shopify-cli-2.7.1 lib/shopify_cli/form.rb
shopify-cli-2.7.0 lib/shopify_cli/form.rb
shopify-cli-2.6.6 lib/shopify_cli/form.rb
shopify-cli-2.6.5 lib/shopify_cli/form.rb
shopify-cli-2.6.4 lib/shopify_cli/form.rb
shopify-cli-2.6.3 lib/shopify_cli/form.rb
shopify-cli-2.6.2 lib/shopify_cli/form.rb
shopify-cli-2.6.1 lib/shopify_cli/form.rb
shopify-cli-2.6.0 lib/shopify_cli/form.rb
shopify-cli-2.5.0 lib/shopify_cli/form.rb