Sha256: 89ee3c60fbc954087801f3aee2ce5f61819651649a8dce8da3801e5d1f09752a

Contents?: true

Size: 1.75 KB

Versions: 2

Compression:

Stored size: 1.75 KB

Contents

# frozen_string_literal: true

require "shopify_cli"

module Script
  module Layers
    module Application
      class CreateScript
        class << self
          def call(ctx:, language:, script_name:, extension_point_type:)
            extension_point = ExtensionPoints.get(type: extension_point_type)
            create_project(ctx, language, script_name, extension_point)
            create_definition(ctx, language, extension_point, script_name)
          end

          private

          def create_project(ctx, language, script_name, extension_point)
            ScriptProject.create(script_name)
            ctx.root = File.join(ctx.root, script_name)
            ScriptProject.write(
              ctx,
              project_type: :script,
              organization_id: nil, # TODO: can you provide this at creation
              extension_point_type: extension_point.type,
              script_name: script_name
            )
            ProjectDependencies
              .bootstrap(ctx: ctx, language: language, extension_point: extension_point, script_name: script_name)
            ProjectDependencies
              .install(ctx: ctx, language: language, extension_point: extension_point, script_name: script_name)
          end

          def create_definition(ctx, language, extension_point, script_name)
            script = nil
            UI::StrictSpinner.spin(ctx.message('script.create.creating')) do |spinner|
              script = Infrastructure::ScriptRepository.new.create_script(language, extension_point, script_name)
              Infrastructure::TestSuiteRepository.new.create_test_suite(script)
              spinner.update_title(ctx.message('script.create.created'))
            end
            script
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
shopify-cli-0.9.1 lib/project_types/script/layers/application/create_script.rb
shopify-cli-0.9.0 lib/project_types/script/layers/application/create_script.rb