Sha256: ed03f3fe26fe1bf0f85260fa9c817affc2e86c8ac23fbc3bf4baef39e2a6f6ac

Contents?: true

Size: 1.42 KB

Versions: 22

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true

module ShopifyCLI
  module Theme
    class Syncer
      module Forms
        class BaseStrategyForm < ShopifyCLI::Form
          attr_accessor :strategy

          def ask
            ctx.puts(title_context(file))

            self.strategy = CLI::UI::Prompt.ask(title_question, allow_empty: false) do |handler|
              strategies.each do |strategy|
                handler.option(as_text(strategy)) { strategy }
              end
            end

            exit_cli if self.strategy == :exit

            self
          end

          protected

          ##
          # List of strategies that populate the form options
          #
          def strategies
            raise "`#{self.class.name}#strategies' must be defined"
          end

          ##
          # Message prefix for the form title and options (strategies).
          # See the methods `title` and `as_text`
          #
          def prefix
            raise "`#{self.class.name}#prefix' must be defined"
          end

          private

          def exit_cli
            exit(0)
          end

          def title_context(file)
            ctx.message("#{prefix}.title_context", file.relative_path)
          end

          def title_question
            ctx.message("#{prefix}.title_question")
          end

          def as_text(strategy)
            ctx.message("#{prefix}.#{strategy}")
          end
        end
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
shopify-cli-2.29.0 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.28.0 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.27.0 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.26.0 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.25.0 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.24.0 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.23.0 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.22.0 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.21.0 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.20.1 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.20.0 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.19.0 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.18.1 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.18.0 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.17.0 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.16.1 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.16.0 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.15.6 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.15.5 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb
shopify-cli-2.15.4 lib/shopify_cli/theme/syncer/forms/base_strategy_form.rb