Sha256: 8d4d7e22c08d52f03c58aa8c380238f3c164d7ca07a7b2792a252367a610baab

Contents?: true

Size: 1.5 KB

Versions: 24

Compression:

Stored size: 1.5 KB

Contents

# frozen_string_literal: true
require "shopify_cli"

module Extension
  class Command
    class Build < ExtensionCommand
      prerequisite_task ensure_project_type: :extension

      YARN_BUILD_COMMAND = %w(build)
      NPM_BUILD_COMMAND = %w(run-script build)

      def call(_args, _command_name)
        project = ExtensionProject.current(force_reload: true)
        return run_new_flow(project) if supports_development_server?(project.specification_identifier)
        run_legacy_flow
      end

      def self.help
        ShopifyCLI::Context.new.message("build.help", ShopifyCLI::TOOL_NAME)
      end

      private

      def run_new_flow(project)
        Tasks::ExecuteCommands
          .build(
            context: @ctx,
            config_file_path: specification_handler.server_config_path,
            type: project.specification_identifier.downcase
          )
          .then { |output| @ctx.puts(output) }
          .unwrap do |error|
            raise ShopifyCLI::Abort, error.message unless error.nil?
          end
      end

      def run_legacy_flow
        system = ShopifyCLI::JsSystem.new(ctx: @ctx)

        CLI::UI::Frame.open(@ctx.message("build.frame_title", system.package_manager)) do
          success = system.call(yarn: YARN_BUILD_COMMAND, npm: NPM_BUILD_COMMAND)
          @ctx.abort(@ctx.message("build.build_failure_message")) unless success
        end
      end

      def supports_development_server?(type)
        Models::DevelopmentServerRequirements.supported?(type)
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

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