Sha256: b3f1422be7a2a947b938024662391ee6a0eee29386a787acbe5d09dd1a3fe631

Contents?: true

Size: 1.42 KB

Versions: 57

Compression:

Stored size: 1.42 KB

Contents

module Extension
  module Forms
    module Questions
      class AskName
        include ShopifyCLI::MethodObject

        property! :ctx
        property :name
        property :prompt,
          accepts: ->(prompt) { prompt.respond_to?(:call) },
          default: -> { CLI::UI::Prompt.method(:ask) }

        def call(project_details)
          if theme_app_extension?(project_details)
            project_details.name = name || "theme-app-extension"
          else
            project_details.name = ask_with_reprompt(
              initial_value: name,
              break_condition: -> (current_name) { Models::Registration.valid_title?(current_name) },
              prompt_message: ctx.message("create.ask_name"),
              reprompt_message: ctx.message("create.invalid_name", Models::Registration::MAX_TITLE_LENGTH)
            )
          end
          project_details
        end

        private

        def theme_app_extension?(project_details)
          project_details&.type&.identifier == "THEME_APP_EXTENSION"
        end

        def ask_with_reprompt(initial_value:, break_condition:, prompt_message:, reprompt_message:)
          value = initial_value
          reprompt = false

          until break_condition.call(value)
            ctx.puts(reprompt_message) if reprompt
            value = prompt.call(prompt_message)&.strip
            reprompt = true
          end

          value
        end
      end
    end
  end
end

Version data entries

57 entries across 57 versions & 1 rubygems

Version Path
shopify-cli-2.36.0 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.35.0 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.34.0 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.33.1 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.33.0 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.32.1 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.32.0 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.31.0 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.30.0 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.29.0 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.28.0 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.27.0 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.26.0 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.25.0 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.24.0 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.23.0 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.22.0 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.21.0 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.20.1 lib/project_types/extension/forms/questions/ask_name.rb
shopify-cli-2.20.0 lib/project_types/extension/forms/questions/ask_name.rb