Sha256: 147a3c5a09be649e13dfea90c4c4d061d923ef3ad610d11718aa99dc71f8fc13

Contents?: true

Size: 1.55 KB

Versions: 12

Compression:

Stored size: 1.55 KB

Contents

# frozen_string_literal: true

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

        property! :ctx
        property! :type
        property! :prompt,
          converts: :to_proc,
          default: -> { CLI::UI::Prompt.method(:ask) }

        def call(project_details)
          project_details.tap(&method(:prompt_for_registration))
        end

        private

        def prompt_for_registration(project_details)
          apps_and_registrations = load_registrations(type)
          app, registration = choose_interactively(apps_and_registrations)
          project_details.app = app
          project_details.registration = registration
        end

        def choose_interactively(apps_and_registrations)
          prompt.call(ctx.message("connect.ask_registration")) do |handler|
            apps_and_registrations.each do |(app, extension)|
              handler.option("#{app.title} by #{app.business_name}: #{extension.title}") { [app, extension] }
            end
          end
        end

        def load_registrations(type)
          ctx.puts(@ctx.message("connect.loading_extensions"))
          registrations = Tasks::GetExtensions.call(context: ctx, type: type)

          registrations.empty? ? abort_no_registrations : registrations
        end

        def abort_no_registrations
          ctx.puts(@ctx.message("connect.no_extensions", type))
          ctx.puts(@ctx.message("connect.learn_about_extensions"))
          raise ShopifyCLI::AbortSilent
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
shopify-cli-2.7.3 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.7.2 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.7.1 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.7.0 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.6.6 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.6.5 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.6.4 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.6.3 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.6.2 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.6.1 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.6.0 lib/project_types/extension/forms/questions/ask_registration.rb
shopify-cli-2.5.0 lib/project_types/extension/forms/questions/ask_registration.rb