Sha256: 247fc535c30d179dde8fcb4395cbf45bb39339bdb70d131958c100ee121fae69

Contents?: true

Size: 1.73 KB

Versions: 4

Compression:

Stored size: 1.73 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)
            project = setup_project(ctx, script_name, extension_point)
            project_creator = Infrastructure::ProjectCreator
              .for(ctx, language, extension_point, script_name, project.directory)
            install_dependencies(ctx, language, script_name, project, project_creator)
            bootstrap(ctx, project_creator)
          end

          private

          def setup_project(ctx, script_name, extension_point)
            ScriptProject.create(ctx, 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
            )
            ScriptProject.current
          end

          def install_dependencies(ctx, language, script_name, project, project_creator)
            task_runner = Infrastructure::TaskRunner.for(ctx, language, script_name, project.source_file)
            project_creator.setup_dependencies
            ProjectDependencies.install(ctx: ctx, task_runner: task_runner)
          end

          def bootstrap(ctx, project_creator)
            UI::StrictSpinner.spin(ctx.message('script.create.creating')) do |spinner|
              project_creator.bootstrap
              spinner.update_title(ctx.message('script.create.created'))
            end
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
shopify-cli-1.0.2 lib/project_types/script/layers/application/create_script.rb
shopify-cli-1.0.1 lib/project_types/script/layers/application/create_script.rb
shopify-cli-1.0.0 lib/project_types/script/layers/application/create_script.rb
shopify-cli-0.9.3 lib/project_types/script/layers/application/create_script.rb