Sha256: 680de7742f7ba7ee529e5b67979f5f0e2660df80e01eae1725612cd714cc093d

Contents?: true

Size: 1.71 KB

Versions: 13

Compression:

Stored size: 1.71 KB

Contents

# frozen_string_literal: true

module Script
  module Layers
    module Infrastructure
      module Languages
        class ProjectCreator
          include SmartProperties
          property! :ctx, accepts: ShopifyCLI::Context
          property! :type, accepts: String
          property! :project_name, accepts: String
          property! :path_to_project, accepts: String
          property! :sparse_checkout_details, accepts: SparseCheckoutDetails

          def self.for(
            ctx:,
            language:,
            type:,
            project_name:,
            path_to_project:,
            sparse_checkout_details:
          )

            project_creators = {
              "typescript" => TypeScriptProjectCreator,
              "wasm" => WasmProjectCreator,
            }

            project_creator = project_creators[language] || WasmProjectCreator

            project_creator.new(
              ctx: ctx,
              type: type,
              project_name: project_name,
              path_to_project: path_to_project,
              sparse_checkout_details: sparse_checkout_details,
            )
          end

          # the sparse checkout process is common to all script types
          def setup_dependencies
            sparse_checkout_details.setup(ctx)
            clean
          end

          private

          def clean
            source = File.join(path_to_project, sparse_checkout_details.path, ".")
            FileUtils.cp_r(source, path_to_project)
            ctx.rm_rf(sparse_checkout_details.path.split("/")[0])
            ctx.rm_rf(".git")
          end

          def command_runner
            @command_runner ||= CommandRunner.new(ctx: ctx)
          end
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
shopify-cli-2.25.0 lib/project_types/script/layers/infrastructure/languages/project_creator.rb
shopify-cli-2.24.0 lib/project_types/script/layers/infrastructure/languages/project_creator.rb
shopify-cli-2.23.0 lib/project_types/script/layers/infrastructure/languages/project_creator.rb
shopify-cli-2.22.0 lib/project_types/script/layers/infrastructure/languages/project_creator.rb
shopify-cli-2.21.0 lib/project_types/script/layers/infrastructure/languages/project_creator.rb
shopify-cli-2.20.1 lib/project_types/script/layers/infrastructure/languages/project_creator.rb
shopify-cli-2.20.0 lib/project_types/script/layers/infrastructure/languages/project_creator.rb
shopify-cli-2.19.0 lib/project_types/script/layers/infrastructure/languages/project_creator.rb
shopify-cli-2.18.1 lib/project_types/script/layers/infrastructure/languages/project_creator.rb
shopify-cli-2.18.0 lib/project_types/script/layers/infrastructure/languages/project_creator.rb
shopify-cli-2.17.0 lib/project_types/script/layers/infrastructure/languages/project_creator.rb
shopify-cli-2.16.1 lib/project_types/script/layers/infrastructure/languages/project_creator.rb
shopify-cli-2.16.0 lib/project_types/script/layers/infrastructure/languages/project_creator.rb