shopify-cli 1.10.0 → 1.14.0

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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.github/PULL_REQUEST_TEMPLATE.md +1 -0
  3. data/.github/workflows/release.yml +2 -4
  4. data/CHANGELOG.md +31 -1
  5. data/Gemfile.lock +1 -1
  6. data/lib/project_types/extension/cli.rb +6 -2
  7. data/lib/project_types/extension/commands/serve.rb +69 -1
  8. data/lib/project_types/extension/commands/tunnel.rb +3 -1
  9. data/lib/project_types/extension/extension_project.rb +1 -0
  10. data/lib/project_types/extension/features/argo.rb +15 -24
  11. data/lib/project_types/extension/features/argo_runtime.rb +91 -0
  12. data/lib/project_types/extension/features/argo_serve.rb +35 -27
  13. data/lib/project_types/extension/features/argo_serve_options.rb +42 -0
  14. data/lib/project_types/extension/messages/messages.rb +3 -0
  15. data/lib/project_types/extension/models/npm_package.rb +14 -0
  16. data/lib/project_types/extension/models/specification.rb +1 -0
  17. data/lib/project_types/extension/models/specification_handlers/checkout_argo_extension.rb +18 -0
  18. data/lib/project_types/extension/models/specification_handlers/default.rb +33 -3
  19. data/lib/project_types/extension/tasks/choose_next_available_port.rb +36 -0
  20. data/lib/project_types/extension/tasks/configure_features.rb +2 -0
  21. data/lib/project_types/extension/tasks/find_npm_packages.rb +106 -0
  22. data/lib/project_types/script/cli.rb +14 -13
  23. data/lib/project_types/script/commands/push.rb +8 -3
  24. data/lib/project_types/script/config/extension_points.yml +0 -3
  25. data/lib/project_types/script/graphql/app_script_update_or_create.graphql +9 -3
  26. data/lib/project_types/script/layers/application/create_script.rb +6 -5
  27. data/lib/project_types/script/layers/application/push_script.rb +2 -1
  28. data/lib/project_types/script/layers/domain/errors.rb +6 -13
  29. data/lib/project_types/script/layers/domain/push_package.rb +4 -8
  30. data/lib/project_types/script/layers/domain/script_json.rb +32 -0
  31. data/lib/project_types/script/layers/domain/script_project.rb +1 -1
  32. data/lib/project_types/script/layers/infrastructure/command_runner.rb +19 -0
  33. data/lib/project_types/script/layers/infrastructure/errors.rb +25 -20
  34. data/lib/project_types/script/layers/infrastructure/languages/assemblyscript_project_creator.rb +105 -0
  35. data/lib/project_types/script/layers/infrastructure/languages/assemblyscript_task_runner.rb +103 -0
  36. data/lib/project_types/script/layers/infrastructure/languages/project_creator.rb +26 -0
  37. data/lib/project_types/script/layers/infrastructure/languages/rust_project_creator.rb +73 -0
  38. data/lib/project_types/script/layers/infrastructure/languages/rust_task_runner.rb +60 -0
  39. data/lib/project_types/script/layers/infrastructure/languages/task_runner.rb +21 -0
  40. data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +6 -8
  41. data/lib/project_types/script/layers/infrastructure/script_project_repository.rb +44 -59
  42. data/lib/project_types/script/layers/infrastructure/script_service.rb +21 -15
  43. data/lib/project_types/script/messages/messages.rb +28 -22
  44. data/lib/project_types/script/tasks/ensure_env.rb +32 -3
  45. data/lib/project_types/script/ui/error_handler.rb +37 -36
  46. data/lib/shopify-cli/admin_api.rb +7 -4
  47. data/lib/shopify-cli/context.rb +13 -0
  48. data/lib/shopify-cli/messages/messages.rb +48 -43
  49. data/lib/shopify-cli/method_object.rb +4 -4
  50. data/lib/shopify-cli/oauth.rb +7 -1
  51. data/lib/shopify-cli/partners_api.rb +7 -4
  52. data/lib/shopify-cli/partners_api/organizations.rb +3 -3
  53. data/lib/shopify-cli/resources/env_file.rb +1 -1
  54. data/lib/shopify-cli/shopifolk.rb +1 -1
  55. data/lib/shopify-cli/tasks/select_org_and_shop.rb +6 -4
  56. data/lib/shopify-cli/tunnel.rb +22 -1
  57. data/lib/shopify-cli/version.rb +1 -1
  58. metadata +17 -11
  59. data/lib/project_types/extension/features/argo_renderer_package.rb +0 -47
  60. data/lib/project_types/script/layers/domain/config_ui.rb +0 -16
  61. data/lib/project_types/script/layers/infrastructure/assemblyscript_project_creator.rb +0 -100
  62. data/lib/project_types/script/layers/infrastructure/assemblyscript_task_runner.rb +0 -95
  63. data/lib/project_types/script/layers/infrastructure/project_creator.rb +0 -24
  64. data/lib/project_types/script/layers/infrastructure/rust_project_creator.rb +0 -72
  65. data/lib/project_types/script/layers/infrastructure/rust_task_runner.rb +0 -59
  66. data/lib/project_types/script/layers/infrastructure/task_runner.rb +0 -19
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Script
4
- module Layers
5
- module Infrastructure
6
- class ProjectCreator
7
- PROJECT_CREATORS = {
8
- "assemblyscript" => Infrastructure::AssemblyScriptProjectCreator,
9
- "rust" => Infrastructure::RustProjectCreator,
10
- }
11
-
12
- def self.for(ctx, language, extension_point, script_name, path_to_project)
13
- raise Errors::ProjectCreatorNotFoundError unless PROJECT_CREATORS[language]
14
- PROJECT_CREATORS[language].new(
15
- ctx: ctx,
16
- extension_point: extension_point,
17
- script_name: script_name,
18
- path_to_project: path_to_project
19
- )
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,72 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Script
4
- module Layers
5
- module Infrastructure
6
- class RustProjectCreator
7
- include SmartProperties
8
- property! :ctx, accepts: ShopifyCli::Context
9
- property! :extension_point, accepts: Domain::ExtensionPoint
10
- property! :script_name, accepts: String
11
- property! :path_to_project, accepts: String
12
-
13
- ORIGIN_BRANCH = "main"
14
- SAMPLE_PATH = "default"
15
-
16
- def setup_dependencies
17
- git_init
18
- setup_remote
19
- setup_sparse_checkout
20
- pull
21
- clean
22
- set_script_name
23
- end
24
-
25
- def bootstrap
26
- end
27
-
28
- private
29
-
30
- def git_init
31
- out, status = ctx.capture2e("git init")
32
- raise Domain::Errors::ServiceFailureError, out unless status.success?
33
- end
34
-
35
- def setup_remote
36
- repo = extension_point.sdks.rust.package
37
- out, status = ctx.capture2e("git remote add -f origin #{repo}")
38
- raise Domain::Errors::ServiceFailureError, out unless status.success?
39
- end
40
-
41
- def setup_sparse_checkout
42
- type = extension_point.type
43
- out, status = ctx.capture2e("git config core.sparsecheckout true")
44
- raise Domain::Errors::ServiceFailureError, out unless status.success?
45
- out, status = ctx.capture2e("echo #{type}/#{SAMPLE_PATH} >> .git/info/sparse-checkout")
46
- raise Domain::Errors::ServiceFailureError, out unless status.success?
47
- end
48
-
49
- def pull
50
- out, status = ctx.capture2e("git pull origin #{ORIGIN_BRANCH}")
51
- raise Domain::Errors::ServiceFailureError, out unless status.success?
52
- end
53
-
54
- def clean
55
- type = extension_point.type
56
- ctx.rm_rf(".git")
57
- source = File.join(path_to_project, File.join(type, SAMPLE_PATH))
58
- FileUtils.copy_entry(source, path_to_project)
59
- ctx.rm_rf(type)
60
- end
61
-
62
- def set_script_name
63
- config_file = "Cargo.toml"
64
- upstream_name = "#{extension_point.type.gsub("_", "-")}-default"
65
- contents = File.read(config_file)
66
- new_contents = contents.sub(upstream_name, script_name)
67
- File.write(config_file, new_contents)
68
- end
69
- end
70
- end
71
- end
72
- end
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
- module Script
3
- module Layers
4
- module Infrastructure
5
- class RustTaskRunner
6
- attr_reader :ctx, :script_name
7
-
8
- BUILD_TARGET = "wasm32-unknown-unknown"
9
- METADATA_FILE = "build/metadata.json"
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 install_dependencies
21
- end
22
-
23
- def build
24
- compile
25
- bytecode
26
- end
27
-
28
- def compiled_type
29
- "wasm"
30
- end
31
-
32
- def metadata
33
- unless @ctx.file_exist?(METADATA_FILE)
34
- msg = @ctx.message("script.error.metadata_not_found_cause", METADATA_FILE)
35
- raise Domain::Errors::MetadataNotFoundError, msg
36
- end
37
-
38
- raw_contents = File.read(METADATA_FILE)
39
- Domain::Metadata.create_from_json(@ctx, raw_contents)
40
- end
41
-
42
- private
43
-
44
- def compile
45
- out, status = ctx.capture2e("cargo build --target=#{BUILD_TARGET} --release")
46
- raise Domain::Errors::ServiceFailureError, out unless status.success?
47
- end
48
-
49
- def bytecode
50
- binary_name = "#{script_name}.wasm"
51
- binary_path = "target/#{BUILD_TARGET}/release/#{binary_name}"
52
- raise Errors::WebAssemblyBinaryNotFoundError unless ctx.file_exist?(binary_path)
53
-
54
- ctx.binread(binary_path)
55
- end
56
- end
57
- end
58
- end
59
- end
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Script
4
- module Layers
5
- module Infrastructure
6
- class TaskRunner
7
- TASK_RUNNERS = {
8
- "assemblyscript" => Infrastructure::AssemblyScriptTaskRunner,
9
- "rust" => Infrastructure::RustTaskRunner,
10
- }
11
-
12
- def self.for(ctx, language, script_name)
13
- raise Errors::TaskRunnerNotFoundError unless TASK_RUNNERS[language]
14
- TASK_RUNNERS[language].new(ctx, script_name)
15
- end
16
- end
17
- end
18
- end
19
- end