shopify-cli 2.10.1 → 2.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.github/ISSUE_TEMPLATE.md +18 -0
 - data/CHANGELOG.md +5 -0
 - data/Gemfile.lock +1 -1
 - data/lib/project_types/script/cli.rb +5 -0
 - data/lib/project_types/script/config/extension_points.yml +12 -0
 - data/lib/project_types/script/graphql/module_upload_url_generate.graphql +5 -1
 - data/lib/project_types/script/layers/application/build_script.rb +6 -2
 - data/lib/project_types/script/layers/application/project_dependencies.rb +1 -1
 - data/lib/project_types/script/layers/application/push_script.rb +38 -30
 - data/lib/project_types/script/layers/domain/errors.rb +7 -1
 - data/lib/project_types/script/layers/domain/extension_point.rb +2 -2
 - data/lib/project_types/script/layers/infrastructure/errors.rb +9 -0
 - data/lib/project_types/script/layers/infrastructure/languages/assemblyscript_task_runner.rb +2 -8
 - data/lib/project_types/script/layers/infrastructure/languages/project_creator.rb +1 -0
 - data/lib/project_types/script/layers/infrastructure/languages/task_runner.rb +1 -0
 - data/lib/project_types/script/layers/infrastructure/languages/typescript_task_runner.rb +2 -8
 - data/lib/project_types/script/layers/infrastructure/languages/wasm_project_creator.rb +15 -0
 - data/lib/project_types/script/layers/infrastructure/languages/wasm_task_runner.rb +36 -0
 - data/lib/project_types/script/layers/infrastructure/metadata_repository.rb +18 -0
 - data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +1 -1
 - data/lib/project_types/script/layers/infrastructure/script_service.rb +10 -6
 - data/lib/project_types/script/layers/infrastructure/script_uploader.rb +22 -9
 - data/lib/project_types/script/messages/messages.rb +10 -3
 - data/lib/project_types/script/ui/error_handler.rb +6 -1
 - data/lib/shopify_cli/version.rb +1 -1
 - data/vendor/deps/cli-kit/lib/cli/kit/system.rb +10 -5
 - data/vendor/deps/cli-ui/lib/cli/ui/os.rb +6 -4
 - metadata +5 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 0cd807b7755484c50b506a5b4af90072b08ac0f9fc2aaff6c684f0fe5e6b63cc
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 76aaf43ba5f6af3a6c9ed5f2f73b0d79cb03261d544602996b9563cd45f4b572
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 407ad8f61eebbfcfbf4c6099eef78a41544ed95002cf7f91fbd9cd56aa473cc1ab6ea323812032c3f21d09760bdcd824908ce9ba1f069ed492997b0cdf3d5853
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 91ae64882ee0e7969bf93697dda900fb812009df58eeff176833e3e609e51f37fa67f418c1b80be670f852a6594308fc0e89e43a477105b316943827f80ad780
         
     | 
    
        data/.github/ISSUE_TEMPLATE.md
    CHANGED
    
    | 
         @@ -1,3 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!--
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Hi! 👋 Thanks for taking the time to open an issue.
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            BEFORE SUBMITTING YOUR ISSUE, please ensure that:
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            1. You've searched the existing issues to see if someone else has already submitted the same thing. You can access the list at: https://github.com/Shopify/shopify-cli/issues (and feel free to add any additional information in a comment!)
         
     | 
| 
      
 8 
     | 
    
         
            +
            2. You've given as much detail as reasonably possible
         
     | 
| 
      
 9 
     | 
    
         
            +
            3. You're working with the latest CLI version (check the badge at https://github.com/Shopify/shopify-cli)
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            This is important because:
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            1. We will notice and prioritize 1 popular issue more quickly than many small duplicates
         
     | 
| 
      
 14 
     | 
    
         
            +
            2. More details = faster, higher-quality response
         
     | 
| 
      
 15 
     | 
    
         
            +
            3. We might have fixed your issue already!
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            -->
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
       1 
19 
     | 
    
         
             
            # Issue summary
         
     | 
| 
       2 
20 
     | 
    
         | 
| 
       3 
21 
     | 
    
         
             
            Write a short description of the issue here ↓
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -2,6 +2,11 @@ From version 2.6.0, the sections in this file adhere to the [keep a changelog](h 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            ## [Unreleased]
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
      
 5 
     | 
    
         
            +
            ## Version 2.10.2
         
     | 
| 
      
 6 
     | 
    
         
            +
            ### Fixed
         
     | 
| 
      
 7 
     | 
    
         
            +
            * [#1983](https://github.com/Shopify/shopify-cli/pull/1983): Improve Windows compatibility
         
     | 
| 
      
 8 
     | 
    
         
            +
            * [#1928](https://github.com/Shopify/shopify-cli/pull/1928): Ensure script Wasm file sizes don't exceed the limit
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
       5 
10 
     | 
    
         
             
            ## Version 2.10.1
         
     | 
| 
       6 
11 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       7 
12 
     | 
    
         
             
            * [#1985](https://github.com/Shopify/shopify-cli/pull/1985): Revert "Fix CORS (Cross-origin resource sharing) errors (#1952)"
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    
| 
         @@ -57,6 +57,7 @@ module Script 
     | 
|
| 
       57 
57 
     | 
    
         
             
                  autoload :CommandRunner, Project.project_filepath("layers/infrastructure/command_runner")
         
     | 
| 
       58 
58 
     | 
    
         
             
                  autoload :PushPackageRepository, Project.project_filepath("layers/infrastructure/push_package_repository")
         
     | 
| 
       59 
59 
     | 
    
         
             
                  autoload :ExtensionPointRepository, Project.project_filepath("layers/infrastructure/extension_point_repository")
         
     | 
| 
      
 60 
     | 
    
         
            +
                  autoload :MetadataRepository, Project.project_filepath("layers/infrastructure/metadata_repository")
         
     | 
| 
       60 
61 
     | 
    
         
             
                  autoload :ScriptProjectRepository, Project.project_filepath("layers/infrastructure/script_project_repository")
         
     | 
| 
       61 
62 
     | 
    
         
             
                  autoload :ScriptService, Project.project_filepath("layers/infrastructure/script_service")
         
     | 
| 
       62 
63 
     | 
    
         
             
                  autoload :ScriptUploader, Project.project_filepath("layers/infrastructure/script_uploader")
         
     | 
| 
         @@ -73,6 +74,10 @@ module Script 
     | 
|
| 
       73 
74 
     | 
    
         
             
                      Project.project_filepath("layers/infrastructure/languages/typescript_project_creator.rb")
         
     | 
| 
       74 
75 
     | 
    
         
             
                    autoload :TypeScriptTaskRunner,
         
     | 
| 
       75 
76 
     | 
    
         
             
                      Project.project_filepath("layers/infrastructure/languages/typescript_task_runner.rb")
         
     | 
| 
      
 77 
     | 
    
         
            +
                    autoload :WasmProjectCreator,
         
     | 
| 
      
 78 
     | 
    
         
            +
                      Project.project_filepath("layers/infrastructure/languages/wasm_project_creator.rb")
         
     | 
| 
      
 79 
     | 
    
         
            +
                    autoload :WasmTaskRunner,
         
     | 
| 
      
 80 
     | 
    
         
            +
                      Project.project_filepath("layers/infrastructure/languages/wasm_task_runner.rb")
         
     | 
| 
       76 
81 
     | 
    
         
             
                  end
         
     | 
| 
       77 
82 
     | 
    
         | 
| 
       78 
83 
     | 
    
         
             
                  module ApiClients
         
     | 
| 
         @@ -8,6 +8,9 @@ payment_methods: 
     | 
|
| 
       8 
8 
     | 
    
         
             
                  beta: true
         
     | 
| 
       9 
9 
     | 
    
         
             
                  package: "@shopify/scripts-checkout-apis"
         
     | 
| 
       10 
10 
     | 
    
         
             
                  repo: "https://github.com/Shopify/scripts-apis-examples"
         
     | 
| 
      
 11 
     | 
    
         
            +
                wasm:
         
     | 
| 
      
 12 
     | 
    
         
            +
                  beta: true
         
     | 
| 
      
 13 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/scripts-apis-examples"
         
     | 
| 
       11 
14 
     | 
    
         
             
            shipping_methods:
         
     | 
| 
       12 
15 
     | 
    
         
             
              domain: 'checkout'
         
     | 
| 
       13 
16 
     | 
    
         
             
              libraries:
         
     | 
| 
         @@ -18,6 +21,9 @@ shipping_methods: 
     | 
|
| 
       18 
21 
     | 
    
         
             
                  beta: true
         
     | 
| 
       19 
22 
     | 
    
         
             
                  package: "@shopify/scripts-checkout-apis"
         
     | 
| 
       20 
23 
     | 
    
         
             
                  repo: "https://github.com/Shopify/scripts-apis-examples"
         
     | 
| 
      
 24 
     | 
    
         
            +
                wasm:
         
     | 
| 
      
 25 
     | 
    
         
            +
                  beta: true
         
     | 
| 
      
 26 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/scripts-apis-examples"
         
     | 
| 
       21 
27 
     | 
    
         
             
            merchandise_discount_types:
         
     | 
| 
       22 
28 
     | 
    
         
             
              beta: true
         
     | 
| 
       23 
29 
     | 
    
         
             
              domain: 'discounts'
         
     | 
| 
         @@ -26,6 +32,9 @@ merchandise_discount_types: 
     | 
|
| 
       26 
32 
     | 
    
         
             
                  beta: true
         
     | 
| 
       27 
33 
     | 
    
         
             
                  package: "@shopify/scripts-discounts-apis"
         
     | 
| 
       28 
34 
     | 
    
         
             
                  repo: "https://github.com/Shopify/scripts-apis-examples"
         
     | 
| 
      
 35 
     | 
    
         
            +
                wasm:
         
     | 
| 
      
 36 
     | 
    
         
            +
                  beta: true
         
     | 
| 
      
 37 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/scripts-apis-examples"
         
     | 
| 
       29 
38 
     | 
    
         
             
            delivery_discount_types:
         
     | 
| 
       30 
39 
     | 
    
         
             
              beta: true
         
     | 
| 
       31 
40 
     | 
    
         
             
              domain: 'discounts'
         
     | 
| 
         @@ -34,3 +43,6 @@ delivery_discount_types: 
     | 
|
| 
       34 
43 
     | 
    
         
             
                  beta: true
         
     | 
| 
       35 
44 
     | 
    
         
             
                  package: "@shopify/scripts-discounts-apis"
         
     | 
| 
       36 
45 
     | 
    
         
             
                  repo: "https://github.com/Shopify/scripts-apis-examples"
         
     | 
| 
      
 46 
     | 
    
         
            +
                wasm:
         
     | 
| 
      
 47 
     | 
    
         
            +
                  beta: true
         
     | 
| 
      
 48 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/scripts-apis-examples"
         
     | 
| 
         @@ -9,10 +9,14 @@ module Script 
     | 
|
| 
       9 
9 
     | 
    
         
             
                        CLI::UI::Frame.open(ctx.message("script.application.building")) do
         
     | 
| 
       10 
10 
     | 
    
         
             
                          begin
         
     | 
| 
       11 
11 
     | 
    
         
             
                            UI::StrictSpinner.spin(ctx.message("script.application.building_script")) do |spinner|
         
     | 
| 
      
 12 
     | 
    
         
            +
                              script_content = task_runner.build
         
     | 
| 
      
 13 
     | 
    
         
            +
                              metadata_file_location = task_runner.metadata_file_location
         
     | 
| 
      
 14 
     | 
    
         
            +
                              metadata = Infrastructure::MetadataRepository.new(ctx: ctx).get_metadata(metadata_file_location)
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
       12 
16 
     | 
    
         
             
                              Infrastructure::PushPackageRepository.new(ctx: ctx).create_push_package(
         
     | 
| 
       13 
17 
     | 
    
         
             
                                script_project: script_project,
         
     | 
| 
       14 
     | 
    
         
            -
                                script_content:  
     | 
| 
       15 
     | 
    
         
            -
                                metadata:  
     | 
| 
      
 18 
     | 
    
         
            +
                                script_content: script_content,
         
     | 
| 
      
 19 
     | 
    
         
            +
                                metadata: metadata,
         
     | 
| 
       16 
20 
     | 
    
         
             
                                library: library,
         
     | 
| 
       17 
21 
     | 
    
         
             
                              )
         
     | 
| 
       18 
22 
     | 
    
         
             
                              spinner.update_title(ctx.message("script.application.built"))
         
     | 
| 
         @@ -3,7 +3,7 @@ module Script 
     | 
|
| 
       3 
3 
     | 
    
         
             
                module Application
         
     | 
| 
       4 
4 
     | 
    
         
             
                  class ProjectDependencies
         
     | 
| 
       5 
5 
     | 
    
         
             
                    def self.install(ctx:, task_runner:)
         
     | 
| 
       6 
     | 
    
         
            -
                      CLI::UI::Frame.open(ctx.message("script.project_deps. 
     | 
| 
      
 6 
     | 
    
         
            +
                      CLI::UI::Frame.open(ctx.message("script.project_deps.checking")) do
         
     | 
| 
       7 
7 
     | 
    
         
             
                        begin
         
     | 
| 
       8 
8 
     | 
    
         
             
                          if task_runner.dependencies_installed?
         
     | 
| 
       9 
9 
     | 
    
         
             
                            ctx.puts(ctx.message("script.project_deps.none_required"))
         
     | 
| 
         @@ -13,45 +13,53 @@ module Script 
     | 
|
| 
       13 
13 
     | 
    
         
             
                          .for(ctx, script_project.language, script_project.script_name)
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
                        extension_point = ExtensionPoints.get(type: script_project.extension_point_type)
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                        library = extension_point.libraries.for(script_project.language)
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
       17 
19 
     | 
    
         
             
                        raise Infrastructure::Errors::LanguageLibraryForAPINotFoundError.new(
         
     | 
| 
       18 
20 
     | 
    
         
             
                          language: script_project.language,
         
     | 
| 
       19 
21 
     | 
    
         
             
                          api: script_project.extension_point_type
         
     | 
| 
       20 
     | 
    
         
            -
                        )  
     | 
| 
      
 22 
     | 
    
         
            +
                        ) if library.nil? && (script_project.language != "wasm")
         
     | 
| 
       21 
23 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
                         
     | 
| 
      
 24 
     | 
    
         
            +
                        library_name = library&.package
         
     | 
| 
      
 25 
     | 
    
         
            +
                        library_data = {
         
     | 
| 
       23 
26 
     | 
    
         
             
                          language: script_project.language,
         
     | 
| 
       24 
27 
     | 
    
         
             
                          version: task_runner.library_version(library_name),
         
     | 
| 
       25 
     | 
    
         
            -
                        }
         
     | 
| 
      
 28 
     | 
    
         
            +
                        } if library_name
         
     | 
| 
       26 
29 
     | 
    
         | 
| 
       27 
30 
     | 
    
         
             
                        ProjectDependencies.install(ctx: ctx, task_runner: task_runner)
         
     | 
| 
       28 
     | 
    
         
            -
                        BuildScript.call(ctx: ctx, task_runner: task_runner, script_project: script_project, library:  
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                             
     | 
| 
       44 
     | 
    
         
            -
                             
     | 
| 
       45 
     | 
    
         
            -
                             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
      
 31 
     | 
    
         
            +
                        BuildScript.call(ctx: ctx, task_runner: task_runner, script_project: script_project, library: library_data)
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                        metadata_file_location = task_runner.metadata_file_location
         
     | 
| 
      
 34 
     | 
    
         
            +
                        metadata = Infrastructure::MetadataRepository.new(ctx: ctx).get_metadata(metadata_file_location)
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                        CLI::UI::Frame.open(ctx.message("script.application.pushing")) do
         
     | 
| 
      
 37 
     | 
    
         
            +
                          UI::PrintingSpinner.spin(ctx, ctx.message("script.application.pushing_script")) do |p_ctx, spinner|
         
     | 
| 
      
 38 
     | 
    
         
            +
                            package = Infrastructure::PushPackageRepository.new(ctx: p_ctx).get_push_package(
         
     | 
| 
      
 39 
     | 
    
         
            +
                              script_project: script_project,
         
     | 
| 
      
 40 
     | 
    
         
            +
                              metadata: metadata,
         
     | 
| 
      
 41 
     | 
    
         
            +
                              library: library_data,
         
     | 
| 
      
 42 
     | 
    
         
            +
                            )
         
     | 
| 
      
 43 
     | 
    
         
            +
                            script_service = Infrastructure::ServiceLocator.script_service(
         
     | 
| 
      
 44 
     | 
    
         
            +
                              ctx: p_ctx,
         
     | 
| 
      
 45 
     | 
    
         
            +
                              api_key: script_project.api_key
         
     | 
| 
      
 46 
     | 
    
         
            +
                            )
         
     | 
| 
      
 47 
     | 
    
         
            +
                            module_upload_url = Infrastructure::ScriptUploader.new(script_service).upload(package.script_content)
         
     | 
| 
      
 48 
     | 
    
         
            +
                            uuid = script_service.set_app_script(
         
     | 
| 
      
 49 
     | 
    
         
            +
                              uuid: package.uuid,
         
     | 
| 
      
 50 
     | 
    
         
            +
                              extension_point_type: package.extension_point_type,
         
     | 
| 
      
 51 
     | 
    
         
            +
                              force: force,
         
     | 
| 
      
 52 
     | 
    
         
            +
                              metadata: package.metadata,
         
     | 
| 
      
 53 
     | 
    
         
            +
                              script_config: package.script_config,
         
     | 
| 
      
 54 
     | 
    
         
            +
                              module_upload_url: module_upload_url,
         
     | 
| 
      
 55 
     | 
    
         
            +
                              library: package.library,
         
     | 
| 
      
 56 
     | 
    
         
            +
                              input_query: script_project.input_query,
         
     | 
| 
      
 57 
     | 
    
         
            +
                            )
         
     | 
| 
      
 58 
     | 
    
         
            +
                            if ShopifyCLI::Environment.interactive?
         
     | 
| 
      
 59 
     | 
    
         
            +
                              script_project_repo.update_env(uuid: uuid)
         
     | 
| 
      
 60 
     | 
    
         
            +
                            end
         
     | 
| 
      
 61 
     | 
    
         
            +
                            spinner.update_title(p_ctx.message("script.application.pushed"))
         
     | 
| 
       53 
62 
     | 
    
         
             
                          end
         
     | 
| 
       54 
     | 
    
         
            -
                          spinner.update_title(p_ctx.message("script.application.pushed"))
         
     | 
| 
       55 
63 
     | 
    
         
             
                        end
         
     | 
| 
       56 
64 
     | 
    
         
             
                      end
         
     | 
| 
       57 
65 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -32,7 +32,13 @@ module Script 
     | 
|
| 
       32 
32 
     | 
    
         
             
                      end
         
     | 
| 
       33 
33 
     | 
    
         
             
                    end
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
                    class MetadataNotFoundError < ScriptProjectError 
     | 
| 
      
 35 
     | 
    
         
            +
                    class MetadataNotFoundError < ScriptProjectError
         
     | 
| 
      
 36 
     | 
    
         
            +
                      attr_reader :filename
         
     | 
| 
      
 37 
     | 
    
         
            +
                      def initialize(filename)
         
     | 
| 
      
 38 
     | 
    
         
            +
                        super()
         
     | 
| 
      
 39 
     | 
    
         
            +
                        @filename = filename
         
     | 
| 
      
 40 
     | 
    
         
            +
                      end
         
     | 
| 
      
 41 
     | 
    
         
            +
                    end
         
     | 
| 
       36 
42 
     | 
    
         | 
| 
       37 
43 
     | 
    
         
             
                    class MetadataValidationError < ScriptProjectError; end
         
     | 
| 
       38 
44 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -42,8 +42,8 @@ module Script 
     | 
|
| 
       42 
42 
     | 
    
         
             
                      end
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
44 
     | 
    
         
             
                      def all
         
     | 
| 
       45 
     | 
    
         
            -
                        @all ||= @config.map do |language,  
     | 
| 
       46 
     | 
    
         
            -
                          ExtensionPointLibrary.new(language,  
     | 
| 
      
 45 
     | 
    
         
            +
                        @all ||= @config.map do |language, library_config|
         
     | 
| 
      
 46 
     | 
    
         
            +
                          ExtensionPointLibrary.new(language, library_config)
         
     | 
| 
       47 
47 
     | 
    
         
             
                        end
         
     | 
| 
       48 
48 
     | 
    
         
             
                      end
         
     | 
| 
       49 
49 
     | 
    
         | 
| 
         @@ -159,6 +159,15 @@ module Script 
     | 
|
| 
       159 
159 
     | 
    
         
             
                    class ScriptUploadError < ScriptProjectError; end
         
     | 
| 
       160 
160 
     | 
    
         
             
                    class ProjectConfigNotFoundError < ScriptProjectError; end
         
     | 
| 
       161 
161 
     | 
    
         
             
                    class InvalidProjectConfigError < ScriptProjectError; end
         
     | 
| 
      
 162 
     | 
    
         
            +
             
     | 
| 
      
 163 
     | 
    
         
            +
                    class ScriptTooLargeError < ScriptProjectError
         
     | 
| 
      
 164 
     | 
    
         
            +
                      attr_reader :max_size
         
     | 
| 
      
 165 
     | 
    
         
            +
             
     | 
| 
      
 166 
     | 
    
         
            +
                      def initialize(max_size)
         
     | 
| 
      
 167 
     | 
    
         
            +
                        super()
         
     | 
| 
      
 168 
     | 
    
         
            +
                        @max_size = max_size
         
     | 
| 
      
 169 
     | 
    
         
            +
                      end
         
     | 
| 
      
 170 
     | 
    
         
            +
                    end
         
     | 
| 
       162 
171 
     | 
    
         
             
                  end
         
     | 
| 
       163 
172 
     | 
    
         
             
                end
         
     | 
| 
       164 
173 
     | 
    
         
             
              end
         
     | 
| 
         @@ -33,14 +33,8 @@ module Script 
     | 
|
| 
       33 
33 
     | 
    
         
             
                        ctx.dir_exist?("node_modules")
         
     | 
| 
       34 
34 
     | 
    
         
             
                      end
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
                      def  
     | 
| 
       37 
     | 
    
         
            -
                         
     | 
| 
       38 
     | 
    
         
            -
                          msg = @ctx.message("script.error.metadata_not_found_cause", METADATA_FILE)
         
     | 
| 
       39 
     | 
    
         
            -
                          raise Domain::Errors::MetadataNotFoundError, msg
         
     | 
| 
       40 
     | 
    
         
            -
                        end
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
                        raw_contents = File.read(METADATA_FILE)
         
     | 
| 
       43 
     | 
    
         
            -
                        Domain::Metadata.create_from_json(@ctx, raw_contents)
         
     | 
| 
      
 36 
     | 
    
         
            +
                      def metadata_file_location
         
     | 
| 
      
 37 
     | 
    
         
            +
                        METADATA_FILE
         
     | 
| 
       44 
38 
     | 
    
         
             
                      end
         
     | 
| 
       45 
39 
     | 
    
         | 
| 
       46 
40 
     | 
    
         
             
                      def library_version(library_name)
         
     | 
| 
         @@ -34,14 +34,8 @@ module Script 
     | 
|
| 
       34 
34 
     | 
    
         
             
                        ctx.dir_exist?("node_modules")
         
     | 
| 
       35 
35 
     | 
    
         
             
                      end
         
     | 
| 
       36 
36 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
                      def  
     | 
| 
       38 
     | 
    
         
            -
                         
     | 
| 
       39 
     | 
    
         
            -
                          msg = @ctx.message("script.error.metadata_not_found_cause", METADATA_FILE)
         
     | 
| 
       40 
     | 
    
         
            -
                          raise Domain::Errors::MetadataNotFoundError, msg
         
     | 
| 
       41 
     | 
    
         
            -
                        end
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                        raw_contents = File.read(METADATA_FILE)
         
     | 
| 
       44 
     | 
    
         
            -
                        Domain::Metadata.create_from_json(@ctx, raw_contents)
         
     | 
| 
      
 37 
     | 
    
         
            +
                      def metadata_file_location
         
     | 
| 
      
 38 
     | 
    
         
            +
                        METADATA_FILE
         
     | 
| 
       45 
39 
     | 
    
         
             
                      end
         
     | 
| 
       46 
40 
     | 
    
         | 
| 
       47 
41 
     | 
    
         
             
                      def library_version(library_name)
         
     | 
| 
         @@ -0,0 +1,36 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Script
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Layers
         
     | 
| 
      
 5 
     | 
    
         
            +
                module Infrastructure
         
     | 
| 
      
 6 
     | 
    
         
            +
                  module Languages
         
     | 
| 
      
 7 
     | 
    
         
            +
                    class WasmTaskRunner
         
     | 
| 
      
 8 
     | 
    
         
            +
                      BYTECODE_FILE = "script.wasm"
         
     | 
| 
      
 9 
     | 
    
         
            +
                      attr_reader :ctx, :script_name
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                      def initialize(ctx, script_name)
         
     | 
| 
      
 12 
     | 
    
         
            +
                        @ctx = ctx
         
     | 
| 
      
 13 
     | 
    
         
            +
                        @script_name = script_name
         
     | 
| 
      
 14 
     | 
    
         
            +
                      end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                      def dependencies_installed?
         
     | 
| 
      
 17 
     | 
    
         
            +
                        true
         
     | 
| 
      
 18 
     | 
    
         
            +
                      end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                      def library_version(_library_name)
         
     | 
| 
      
 21 
     | 
    
         
            +
                        nil
         
     | 
| 
      
 22 
     | 
    
         
            +
                      end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                      def metadata_file_location
         
     | 
| 
      
 25 
     | 
    
         
            +
                        "metadata.json"
         
     | 
| 
      
 26 
     | 
    
         
            +
                      end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                      def build
         
     | 
| 
      
 29 
     | 
    
         
            +
                        raise Errors::WebAssemblyBinaryNotFoundError unless ctx.file_exist?(BYTECODE_FILE)
         
     | 
| 
      
 30 
     | 
    
         
            +
                        ctx.binread(BYTECODE_FILE)
         
     | 
| 
      
 31 
     | 
    
         
            +
                      end
         
     | 
| 
      
 32 
     | 
    
         
            +
                    end
         
     | 
| 
      
 33 
     | 
    
         
            +
                  end
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            module Script
         
     | 
| 
      
 3 
     | 
    
         
            +
              module Layers
         
     | 
| 
      
 4 
     | 
    
         
            +
                module Infrastructure
         
     | 
| 
      
 5 
     | 
    
         
            +
                  class MetadataRepository
         
     | 
| 
      
 6 
     | 
    
         
            +
                    include SmartProperties
         
     | 
| 
      
 7 
     | 
    
         
            +
                    property! :ctx, accepts: ShopifyCLI::Context
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                    def get_metadata(file_location)
         
     | 
| 
      
 10 
     | 
    
         
            +
                      raise Domain::Errors::MetadataNotFoundError, file_location unless ctx.file_exist?(file_location)
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                      raw_contents = File.read(file_location)
         
     | 
| 
      
 13 
     | 
    
         
            +
                      Domain::Metadata.create_from_json(ctx, raw_contents)
         
     | 
| 
      
 14 
     | 
    
         
            +
                    end
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -24,7 +24,7 @@ module Script 
     | 
|
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
                    def get_push_package(script_project:, metadata:, library:)
         
     | 
| 
       26 
26 
     | 
    
         
             
                      build_file_path = file_path(script_project.id)
         
     | 
| 
       27 
     | 
    
         
            -
                      raise Domain::PushPackageNotFoundError unless ctx.file_exist?(build_file_path)
         
     | 
| 
      
 27 
     | 
    
         
            +
                      raise Domain::Errors::PushPackageNotFoundError unless ctx.file_exist?(build_file_path)
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         
             
                      script_content = ctx.binread(build_file_path)
         
     | 
| 
       30 
30 
     | 
    
         
             
                      Domain::PushPackage.new(
         
     | 
| 
         @@ -35,12 +35,14 @@ module Script 
     | 
|
| 
       35 
35 
     | 
    
         
             
                        configurationUi: script_config.configuration_ui,
         
     | 
| 
       36 
36 
     | 
    
         
             
                        configurationDefinition: script_config.configuration&.to_json,
         
     | 
| 
       37 
37 
     | 
    
         
             
                        moduleUploadUrl: module_upload_url,
         
     | 
| 
       38 
     | 
    
         
            -
                        library: {
         
     | 
| 
       39 
     | 
    
         
            -
                          language: library[:language],
         
     | 
| 
       40 
     | 
    
         
            -
                          version: library[:version],
         
     | 
| 
       41 
     | 
    
         
            -
                        },
         
     | 
| 
       42 
38 
     | 
    
         
             
                        inputQuery: input_query,
         
     | 
| 
       43 
39 
     | 
    
         
             
                      }
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                      variables[:library] = {
         
     | 
| 
      
 42 
     | 
    
         
            +
                        language: library[:language],
         
     | 
| 
      
 43 
     | 
    
         
            +
                        version: library[:version],
         
     | 
| 
      
 44 
     | 
    
         
            +
                      }  if library
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
       44 
46 
     | 
    
         
             
                      resp_hash = make_request(query_name: query_name, variables: variables)
         
     | 
| 
       45 
47 
     | 
    
         
             
                      user_errors = resp_hash["data"]["appScriptSet"]["userErrors"]
         
     | 
| 
       46 
48 
     | 
    
         | 
| 
         @@ -93,14 +95,16 @@ module Script 
     | 
|
| 
       93 
95 
     | 
    
         
             
                      response["data"]["appScripts"]
         
     | 
| 
       94 
96 
     | 
    
         
             
                    end
         
     | 
| 
       95 
97 
     | 
    
         | 
| 
       96 
     | 
    
         
            -
                    def  
     | 
| 
      
 98 
     | 
    
         
            +
                    def generate_module_upload_details
         
     | 
| 
       97 
99 
     | 
    
         
             
                      query_name = "module_upload_url_generate"
         
     | 
| 
       98 
100 
     | 
    
         
             
                      variables = {}
         
     | 
| 
       99 
101 
     | 
    
         
             
                      response = make_request(query_name: query_name, variables: variables)
         
     | 
| 
       100 
102 
     | 
    
         
             
                      user_errors = response["data"]["moduleUploadUrlGenerate"]["userErrors"]
         
     | 
| 
       101 
103 
     | 
    
         | 
| 
       102 
104 
     | 
    
         
             
                      raise Errors::GraphqlError, user_errors if user_errors.any?
         
     | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
                      data = response["data"]["moduleUploadUrlGenerate"]["details"]
         
     | 
| 
      
 107 
     | 
    
         
            +
                      { url: data["url"], headers: data["headers"], max_size: data["humanizedMaxSize"] }
         
     | 
| 
       104 
108 
     | 
    
         
             
                    end
         
     | 
| 
       105 
109 
     | 
    
         | 
| 
       106 
110 
     | 
    
         
             
                    private
         
     | 
| 
         @@ -7,19 +7,32 @@ module Script 
     | 
|
| 
       7 
7 
     | 
    
         
             
                    end
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
                    def upload(script_content)
         
     | 
| 
       10 
     | 
    
         
            -
                      @script_service. 
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
                      upload_details = @script_service.generate_module_upload_details
         
     | 
| 
      
 11 
     | 
    
         
            +
                      url = URI(upload_details[:url])
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
                      https = Net::HTTP.new(url.host, url.port)
         
     | 
| 
      
 14 
     | 
    
         
            +
                      https.use_ssl = true
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                        request.body = script_content
         
     | 
| 
      
 16 
     | 
    
         
            +
                      request = Net::HTTP::Put.new(url)
         
     | 
| 
      
 17 
     | 
    
         
            +
                      request["Content-Type"] = "application/wasm"
         
     | 
| 
       19 
18 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                         
     | 
| 
      
 19 
     | 
    
         
            +
                      upload_details[:headers].each do |header, value|
         
     | 
| 
      
 20 
     | 
    
         
            +
                        request[header] = value
         
     | 
| 
       22 
21 
     | 
    
         
             
                      end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                      request.body = script_content
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                      response = https.request(request)
         
     | 
| 
      
 26 
     | 
    
         
            +
                      raise Errors::ScriptTooLargeError, upload_details[:max_size] if script_too_large?(response)
         
     | 
| 
      
 27 
     | 
    
         
            +
                      raise Errors::ScriptUploadError unless response.code == "200"
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                      upload_details[:url]
         
     | 
| 
      
 30 
     | 
    
         
            +
                    end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                    private
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                    def script_too_large?(response)
         
     | 
| 
      
 35 
     | 
    
         
            +
                      response.code == "400" && response.body.include?("EntityTooLarge")
         
     | 
| 
       23 
36 
     | 
    
         
             
                    end
         
     | 
| 
       24 
37 
     | 
    
         
             
                  end
         
     | 
| 
       25 
38 
     | 
    
         
             
                end
         
     | 
| 
         @@ -129,8 +129,8 @@ module Script 
     | 
|
| 
       129 
129 
     | 
    
         
             
                        "\nbuild: npx shopify-scripts-toolchain-as build --src src/shopify_main.ts --binary build/<script_name>.wasm --metadata build/metadata.json -- --lib node_modules --optimize --use Date=",
         
     | 
| 
       130 
130 
     | 
    
         | 
| 
       131 
131 
     | 
    
         
             
                      web_assembly_binary_not_found: "WebAssembly binary not found.",
         
     | 
| 
       132 
     | 
    
         
            -
                      web_assembly_binary_not_found_suggestion: "No WebAssembly binary found." \
         
     | 
| 
       133 
     | 
    
         
            -
                        "Check that your build  
     | 
| 
      
 132 
     | 
    
         
            +
                      web_assembly_binary_not_found_suggestion: "No WebAssembly binary found. " \
         
     | 
| 
      
 133 
     | 
    
         
            +
                        "Check that your build script outputs the generated binary to the root of the directory. " \
         
     | 
| 
       134 
134 
     | 
    
         
             
                        "Generated binary should match the script name: <script_name>.wasm",
         
     | 
| 
       135 
135 
     | 
    
         | 
| 
       136 
136 
     | 
    
         
             
                      project_config_not_found: "Internal error - Script can't be created because the project's config file is missing from the repository.",
         
     | 
| 
         @@ -140,6 +140,9 @@ module Script 
     | 
|
| 
       140 
140 
     | 
    
         
             
                      script_upload_cause: "Fail to upload script.",
         
     | 
| 
       141 
141 
     | 
    
         
             
                      script_upload_help: "Try again.",
         
     | 
| 
       142 
142 
     | 
    
         | 
| 
      
 143 
     | 
    
         
            +
                      script_too_large_cause: "The size of your Wasm binary file is too large.",
         
     | 
| 
      
 144 
     | 
    
         
            +
                      script_too_large_help: "It must be less than %{max_size}.",
         
     | 
| 
      
 145 
     | 
    
         
            +
             
     | 
| 
       143 
146 
     | 
    
         
             
                      api_library_not_found_cause: "Script can't be created because API library %{library_name} is missing from the dependencies",
         
     | 
| 
       144 
147 
     | 
    
         
             
                      api_library_not_found_help: "This error can occur because the API library was removed from your system or there is a problem with dependencies in the repository.",
         
     | 
| 
       145 
148 
     | 
    
         | 
| 
         @@ -170,6 +173,9 @@ module Script 
     | 
|
| 
       170 
173 
     | 
    
         
             
                      change_directory_notice: "{{*}} Change directories to {{green:%s}} to run script commands",
         
     | 
| 
       171 
174 
     | 
    
         
             
                      creating: "Creating script",
         
     | 
| 
       172 
175 
     | 
    
         
             
                      created: "Created script",
         
     | 
| 
      
 176 
     | 
    
         
            +
                      preparing_project: "Preparing script project structure",
         
     | 
| 
      
 177 
     | 
    
         
            +
                      creating_wasm: "Creating configuration files",
         
     | 
| 
      
 178 
     | 
    
         
            +
                      created_wasm: "Configuration files created",
         
     | 
| 
       173 
179 
     | 
    
         
             
                    },
         
     | 
| 
       174 
180 
     | 
    
         | 
| 
       175 
181 
     | 
    
         
             
                    push: {
         
     | 
| 
         @@ -218,7 +224,7 @@ module Script 
     | 
|
| 
       218 
224 
     | 
    
         | 
| 
       219 
225 
     | 
    
         
             
                    project_deps: {
         
     | 
| 
       220 
226 
     | 
    
         
             
                      none_required: "{{v}} None required",
         
     | 
| 
       221 
     | 
    
         
            -
                       
     | 
| 
      
 227 
     | 
    
         
            +
                      checking: "Checking dependencies",
         
     | 
| 
       222 
228 
     | 
    
         
             
                      installing: "Dependencies installing",
         
     | 
| 
       223 
229 
     | 
    
         
             
                      installed: "Missing dependencies installed",
         
     | 
| 
       224 
230 
     | 
    
         
             
                    },
         
     | 
| 
         @@ -236,6 +242,7 @@ module Script 
     | 
|
| 
       236 
242 
     | 
    
         
             
                      building_script: "Building script",
         
     | 
| 
       237 
243 
     | 
    
         
             
                      built: "Built",
         
     | 
| 
       238 
244 
     | 
    
         
             
                      pushing: "Pushing",
         
     | 
| 
      
 245 
     | 
    
         
            +
                      pushing_script: "Pushing script",
         
     | 
| 
       239 
246 
     | 
    
         
             
                      pushed: "Pushed",
         
     | 
| 
       240 
247 
     | 
    
         
             
                      ensure_env: {
         
     | 
| 
       241 
248 
     | 
    
         
             
                        organization: "Partner organization {{green:%s (%s)}}.",
         
     | 
| 
         @@ -100,7 +100,7 @@ module Script 
     | 
|
| 
       100 
100 
     | 
    
         
             
                      }
         
     | 
| 
       101 
101 
     | 
    
         
             
                    when Layers::Domain::Errors::MetadataNotFoundError
         
     | 
| 
       102 
102 
     | 
    
         
             
                      {
         
     | 
| 
       103 
     | 
    
         
            -
                        cause_of_error: ShopifyCLI::Context.message("script.error.metadata_not_found_cause"),
         
     | 
| 
      
 103 
     | 
    
         
            +
                        cause_of_error: ShopifyCLI::Context.message("script.error.metadata_not_found_cause", e.filename),
         
     | 
| 
       104 
104 
     | 
    
         
             
                        help_suggestion: ShopifyCLI::Context.message("script.error.metadata_not_found_help"),
         
     | 
| 
       105 
105 
     | 
    
         
             
                      }
         
     | 
| 
       106 
106 
     | 
    
         
             
                    when Layers::Domain::Errors::MissingScriptConfigFieldError
         
     | 
| 
         @@ -251,6 +251,11 @@ module Script 
     | 
|
| 
       251 
251 
     | 
    
         
             
                        cause_of_error: ShopifyCLI::Context.message("script.error.script_upload_cause"),
         
     | 
| 
       252 
252 
     | 
    
         
             
                        help_suggestion: ShopifyCLI::Context.message("script.error.script_upload_help"),
         
     | 
| 
       253 
253 
     | 
    
         
             
                      }
         
     | 
| 
      
 254 
     | 
    
         
            +
                    when Layers::Infrastructure::Errors::ScriptTooLargeError
         
     | 
| 
      
 255 
     | 
    
         
            +
                      {
         
     | 
| 
      
 256 
     | 
    
         
            +
                        cause_of_error: ShopifyCLI::Context.message("script.error.script_too_large_cause"),
         
     | 
| 
      
 257 
     | 
    
         
            +
                        help_suggestion: ShopifyCLI::Context.message("script.error.script_too_large_help", max_size: e.max_size),
         
     | 
| 
      
 258 
     | 
    
         
            +
                      }
         
     | 
| 
       254 
259 
     | 
    
         
             
                    when Layers::Infrastructure::Errors::APILibraryNotFoundError
         
     | 
| 
       255 
260 
     | 
    
         
             
                      {
         
     | 
| 
       256 
261 
     | 
    
         
             
                        cause_of_error: ShopifyCLI::Context
         
     | 
    
        data/lib/shopify_cli/version.rb
    CHANGED
    
    
| 
         @@ -174,11 +174,16 @@ module CLI 
     | 
|
| 
       174 
174 
     | 
    
         
             
                    end
         
     | 
| 
       175 
175 
     | 
    
         | 
| 
       176 
176 
     | 
    
         
             
                    def os
         
     | 
| 
       177 
     | 
    
         
            -
                       
     | 
| 
       178 
     | 
    
         
            -
                       
     | 
| 
       179 
     | 
    
         
            -
                       
     | 
| 
       180 
     | 
    
         
            -
             
     | 
| 
       181 
     | 
    
         
            -
             
     | 
| 
      
 177 
     | 
    
         
            +
                      @current_os ||= case RbConfig::CONFIG['host_os']
         
     | 
| 
      
 178 
     | 
    
         
            +
                      when /darwin/ then :mac
         
     | 
| 
      
 179 
     | 
    
         
            +
                      when /linux/ then :linux
         
     | 
| 
      
 180 
     | 
    
         
            +
                      else
         
     | 
| 
      
 181 
     | 
    
         
            +
                        if RUBY_PLATFORM !~ /cygwin/ && ENV['OS'] == 'Windows_NT'
         
     | 
| 
      
 182 
     | 
    
         
            +
                          :windows
         
     | 
| 
      
 183 
     | 
    
         
            +
                        else
         
     | 
| 
      
 184 
     | 
    
         
            +
                          raise "Could not determine OS from host_os #{RbConfig::CONFIG["host_os"]}"
         
     | 
| 
      
 185 
     | 
    
         
            +
                        end
         
     | 
| 
      
 186 
     | 
    
         
            +
                      end
         
     | 
| 
       182 
187 
     | 
    
         
             
                    end
         
     | 
| 
       183 
188 
     | 
    
         | 
| 
       184 
189 
     | 
    
         
             
                    private
         
     | 
| 
         @@ -4,15 +4,17 @@ module CLI 
     | 
|
| 
       4 
4 
     | 
    
         
             
                  # Determines which OS is currently running the UI, to make it easier to
         
     | 
| 
       5 
5 
     | 
    
         
             
                  # adapt its behaviour to the features of the OS.
         
     | 
| 
       6 
6 
     | 
    
         
             
                  def self.current
         
     | 
| 
       7 
     | 
    
         
            -
                    @current_os ||= case  
     | 
| 
      
 7 
     | 
    
         
            +
                    @current_os ||= case RbConfig::CONFIG['host_os']
         
     | 
| 
       8 
8 
     | 
    
         
             
                    when /darwin/
         
     | 
| 
       9 
9 
     | 
    
         
             
                      Mac
         
     | 
| 
       10 
10 
     | 
    
         
             
                    when /linux/
         
     | 
| 
       11 
11 
     | 
    
         
             
                      Linux
         
     | 
| 
       12 
     | 
    
         
            -
                    when /mingw32/
         
     | 
| 
       13 
     | 
    
         
            -
                      Windows
         
     | 
| 
       14 
12 
     | 
    
         
             
                    else
         
     | 
| 
       15 
     | 
    
         
            -
                       
     | 
| 
      
 13 
     | 
    
         
            +
                      if RUBY_PLATFORM !~ /cygwin/ && ENV['OS'] == 'Windows_NT'
         
     | 
| 
      
 14 
     | 
    
         
            +
                        Windows
         
     | 
| 
      
 15 
     | 
    
         
            +
                      else
         
     | 
| 
      
 16 
     | 
    
         
            +
                        raise "Could not determine OS from host_os #{RbConfig::CONFIG["host_os"]}"
         
     | 
| 
      
 17 
     | 
    
         
            +
                      end
         
     | 
| 
       16 
18 
     | 
    
         
             
                    end
         
     | 
| 
       17 
19 
     | 
    
         
             
                  end
         
     | 
| 
       18 
20 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: shopify-cli
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2.10. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.10.2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Shopify
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2022-01- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2022-01-31 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
         @@ -317,6 +317,9 @@ files: 
     | 
|
| 
       317 
317 
     | 
    
         
             
            - lib/project_types/script/layers/infrastructure/languages/task_runner.rb
         
     | 
| 
       318 
318 
     | 
    
         
             
            - lib/project_types/script/layers/infrastructure/languages/typescript_project_creator.rb
         
     | 
| 
       319 
319 
     | 
    
         
             
            - lib/project_types/script/layers/infrastructure/languages/typescript_task_runner.rb
         
     | 
| 
      
 320 
     | 
    
         
            +
            - lib/project_types/script/layers/infrastructure/languages/wasm_project_creator.rb
         
     | 
| 
      
 321 
     | 
    
         
            +
            - lib/project_types/script/layers/infrastructure/languages/wasm_task_runner.rb
         
     | 
| 
      
 322 
     | 
    
         
            +
            - lib/project_types/script/layers/infrastructure/metadata_repository.rb
         
     | 
| 
       320 
323 
     | 
    
         
             
            - lib/project_types/script/layers/infrastructure/push_package_repository.rb
         
     | 
| 
       321 
324 
     | 
    
         
             
            - lib/project_types/script/layers/infrastructure/script_project_repository.rb
         
     | 
| 
       322 
325 
     | 
    
         
             
            - lib/project_types/script/layers/infrastructure/script_service.rb
         
     |