shopify-cli 2.24.0 → 2.26.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 (130) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +1 -1
  5. data/dev.yml +0 -3
  6. data/lib/project_types/extension/commands/serve.rb +57 -3
  7. data/lib/project_types/extension/extension_project.rb +8 -1
  8. data/lib/project_types/extension/loaders/project.rb +3 -2
  9. data/lib/project_types/extension/messages/messages.rb +21 -6
  10. data/lib/project_types/extension/models/server_config/development_renderer.rb +1 -1
  11. data/lib/project_types/extension/models/specification_handlers/theme_app_extension.rb +18 -6
  12. data/lib/project_types/script/cli.rb +0 -79
  13. data/lib/project_types/script/commands/connect.rb +3 -8
  14. data/lib/project_types/script/commands/create.rb +4 -29
  15. data/lib/project_types/script/commands/javy.rb +3 -8
  16. data/lib/project_types/script/commands/push.rb +4 -41
  17. data/lib/project_types/script/messages/messages.rb +1 -258
  18. data/lib/project_types/theme/commands/common/shop_helper.rb +13 -0
  19. data/lib/project_types/theme/commands/delete.rb +4 -1
  20. data/lib/project_types/theme/commands/list.rb +3 -4
  21. data/lib/project_types/theme/commands/open.rb +4 -1
  22. data/lib/project_types/theme/commands/publish.rb +4 -1
  23. data/lib/project_types/theme/commands/pull.rb +3 -1
  24. data/lib/project_types/theme/commands/push.rb +3 -1
  25. data/lib/project_types/theme/commands/serve.rb +15 -3
  26. data/lib/project_types/theme/messages/messages.rb +9 -7
  27. data/lib/shopify_cli/commands/logout.rb +13 -2
  28. data/lib/shopify_cli/environment.rb +1 -1
  29. data/lib/shopify_cli/file_system_listener.rb +30 -0
  30. data/lib/shopify_cli/git.rb +116 -33
  31. data/lib/shopify_cli/identity_auth.rb +1 -0
  32. data/lib/shopify_cli/messages/messages.rb +1 -1
  33. data/lib/shopify_cli/packager.rb +12 -3
  34. data/lib/shopify_cli/project.rb +1 -1
  35. data/lib/shopify_cli/release.rb +4 -2
  36. data/lib/shopify_cli/tasks/ensure_project_type.rb +3 -1
  37. data/lib/shopify_cli/theme/dev_server/cdn_fonts.rb +1 -1
  38. data/lib/shopify_cli/theme/dev_server/certificate_manager.rb +1 -1
  39. data/lib/shopify_cli/theme/dev_server/errors.rb +9 -0
  40. data/lib/shopify_cli/theme/dev_server/header_hash.rb +1 -1
  41. data/lib/shopify_cli/theme/dev_server/hooks/file_change_hook.rb +77 -0
  42. data/lib/shopify_cli/theme/dev_server/hot_reload/remote_file_deleter.rb +1 -1
  43. data/lib/shopify_cli/theme/dev_server/hot_reload/remote_file_reloader.rb +1 -1
  44. data/lib/shopify_cli/theme/dev_server/{hot-reload-no-script.html → hot_reload/resources/hot-reload-no-script.html} +0 -0
  45. data/lib/shopify_cli/theme/dev_server/hot_reload/resources/hot_reload.js +48 -0
  46. data/lib/shopify_cli/theme/dev_server/hot_reload/resources/sse_client.js +43 -0
  47. data/lib/shopify_cli/theme/dev_server/hot_reload/resources/theme.js +114 -0
  48. data/lib/shopify_cli/theme/dev_server/hot_reload/resources/theme_extension.js +121 -0
  49. data/lib/shopify_cli/theme/dev_server/hot_reload/script_injector.rb +57 -0
  50. data/lib/shopify_cli/theme/dev_server/hot_reload/sections_index.rb +1 -1
  51. data/lib/shopify_cli/theme/dev_server/hot_reload.rb +8 -76
  52. data/lib/shopify_cli/theme/dev_server/local_assets.rb +28 -28
  53. data/lib/shopify_cli/theme/dev_server/proxy.rb +33 -25
  54. data/lib/shopify_cli/theme/dev_server/proxy_param_builder.rb +82 -0
  55. data/lib/shopify_cli/theme/dev_server/reload_mode.rb +1 -1
  56. data/lib/shopify_cli/theme/dev_server/remote_watcher/json_files_update_job.rb +1 -1
  57. data/lib/shopify_cli/theme/dev_server/remote_watcher.rb +1 -1
  58. data/lib/shopify_cli/theme/dev_server/sse.rb +1 -1
  59. data/lib/shopify_cli/theme/dev_server/watcher.rb +8 -9
  60. data/lib/shopify_cli/theme/dev_server/web_server.rb +1 -1
  61. data/lib/shopify_cli/theme/dev_server.rb +287 -99
  62. data/lib/shopify_cli/theme/extension/app_extension.rb +40 -0
  63. data/lib/shopify_cli/theme/extension/dev_server/hooks/file_change_hook.rb +68 -0
  64. data/lib/shopify_cli/theme/extension/dev_server/hot_reload/script_injector.rb +30 -0
  65. data/lib/shopify_cli/theme/extension/dev_server/hot_reload.rb +13 -0
  66. data/lib/shopify_cli/theme/extension/dev_server/local_assets.rb +30 -0
  67. data/lib/shopify_cli/theme/{dev_server/proxy/template_param_builder.rb → extension/dev_server/proxy_param_builder.rb} +26 -16
  68. data/lib/shopify_cli/theme/extension/dev_server/watcher.rb +47 -0
  69. data/lib/shopify_cli/theme/extension/dev_server.rb +150 -0
  70. data/lib/shopify_cli/theme/extension/host_theme.rb +104 -0
  71. data/lib/shopify_cli/theme/extension/syncer/extension_serve_job.rb +133 -0
  72. data/lib/shopify_cli/theme/extension/syncer/operation.rb +21 -0
  73. data/lib/shopify_cli/theme/extension/syncer.rb +81 -0
  74. data/lib/shopify_cli/theme/extension/ui/host_theme_progress_bar.rb +35 -0
  75. data/lib/shopify_cli/theme/ignore_helper.rb +31 -0
  76. data/lib/shopify_cli/theme/root.rb +62 -0
  77. data/lib/shopify_cli/theme/syncer.rb +12 -6
  78. data/lib/shopify_cli/theme/theme.rb +10 -52
  79. data/lib/shopify_cli/version.rb +1 -1
  80. data/vendor/deps/cli-ui/lib/cli/ui/prompt/interactive_options.rb +1 -1
  81. metadata +28 -53
  82. data/.github/workflows/triage.yml +0 -22
  83. data/lib/project_types/script/config/extension_points.yml +0 -45
  84. data/lib/project_types/script/errors.rb +0 -10
  85. data/lib/project_types/script/forms/ask_app.rb +0 -27
  86. data/lib/project_types/script/forms/ask_org.rb +0 -30
  87. data/lib/project_types/script/forms/ask_script_uuid.rb +0 -22
  88. data/lib/project_types/script/forms/create.rb +0 -33
  89. data/lib/project_types/script/forms/run_against_shopify_org.rb +0 -14
  90. data/lib/project_types/script/graphql/app_script_set.graphql +0 -46
  91. data/lib/project_types/script/graphql/get_app_scripts.graphql +0 -6
  92. data/lib/project_types/script/graphql/module_upload_url_generate.graphql +0 -13
  93. data/lib/project_types/script/graphql/script_service_proxy.graphql +0 -7
  94. data/lib/project_types/script/layers/application/build_script.rb +0 -25
  95. data/lib/project_types/script/layers/application/connect_app.rb +0 -86
  96. data/lib/project_types/script/layers/application/create_script.rb +0 -90
  97. data/lib/project_types/script/layers/application/extension_points.rb +0 -66
  98. data/lib/project_types/script/layers/application/project_dependencies.rb +0 -26
  99. data/lib/project_types/script/layers/application/push_script.rb +0 -74
  100. data/lib/project_types/script/layers/domain/app_bridge.rb +0 -16
  101. data/lib/project_types/script/layers/domain/errors.rb +0 -47
  102. data/lib/project_types/script/layers/domain/extension_point.rb +0 -81
  103. data/lib/project_types/script/layers/domain/metadata.rb +0 -46
  104. data/lib/project_types/script/layers/domain/push_package.rb +0 -41
  105. data/lib/project_types/script/layers/domain/script_config.rb +0 -32
  106. data/lib/project_types/script/layers/domain/script_project.rb +0 -61
  107. data/lib/project_types/script/layers/infrastructure/api_clients/partners_proxy_api_client.rb +0 -53
  108. data/lib/project_types/script/layers/infrastructure/api_clients/script_service_api_client.rb +0 -35
  109. data/lib/project_types/script/layers/infrastructure/command_runner.rb +0 -19
  110. data/lib/project_types/script/layers/infrastructure/errors.rb +0 -211
  111. data/lib/project_types/script/layers/infrastructure/extension_point_repository.rb +0 -37
  112. data/lib/project_types/script/layers/infrastructure/languages/project_creator.rb +0 -62
  113. data/lib/project_types/script/layers/infrastructure/languages/task_runner.rb +0 -47
  114. data/lib/project_types/script/layers/infrastructure/languages/tool_version_checker.rb +0 -26
  115. data/lib/project_types/script/layers/infrastructure/languages/typescript_project_creator.rb +0 -45
  116. data/lib/project_types/script/layers/infrastructure/languages/typescript_task_runner.rb +0 -103
  117. data/lib/project_types/script/layers/infrastructure/languages/wasm_project_creator.rb +0 -12
  118. data/lib/project_types/script/layers/infrastructure/languages/wasm_task_runner.rb +0 -32
  119. data/lib/project_types/script/layers/infrastructure/metadata_repository.rb +0 -18
  120. data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +0 -36
  121. data/lib/project_types/script/layers/infrastructure/script_project_repository.rb +0 -273
  122. data/lib/project_types/script/layers/infrastructure/script_service.rb +0 -135
  123. data/lib/project_types/script/layers/infrastructure/script_uploader.rb +0 -40
  124. data/lib/project_types/script/layers/infrastructure/service_locator.rb +0 -20
  125. data/lib/project_types/script/layers/infrastructure/sparse_checkout_details.rb +0 -35
  126. data/lib/project_types/script/ui/error_handler.rb +0 -331
  127. data/lib/project_types/script/ui/printing_spinner.rb +0 -75
  128. data/lib/project_types/script/ui/strict_spinner.rb +0 -20
  129. data/lib/shopify_cli/theme/dev_server/hot-reload.js +0 -194
  130. data/lib/shopify_cli/theme/syncer/ignore_helper.rb +0 -33
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b181be543b5e3f2d630f728672a49eba4ca45a2bf3515cb795ba4d3ffd816d5a
4
- data.tar.gz: ebe6ae92838de46c6ffbb3d0b311a6bf9f84619908e0fbd4dad0fdba84f5adba
3
+ metadata.gz: 1947b9e99b60efb4eb548badb8f41ee520f17ed0025a2666ec58a62594964abc
4
+ data.tar.gz: b7b7714ce470469573282c561c335103cb8471319785fd327a7f7e8442eb71d2
5
5
  SHA512:
6
- metadata.gz: b8ebcc3d7cc5d7e4ef5c30ff3286a9a853d5b7b8144b8c7f00adb844a4ebaad93b6b5cf9d66ddcd2a33b94378f7b66a0c9a4966c5d5687588dc867769f0d4cd0
7
- data.tar.gz: d5d6c740f02d5e0b6fb40a7c357347a08ef770355908d4418959e89e6b016075bb638722abaa8649ee3a6475391885016e373ea9624459b2a63ce8c8f7891d7f
6
+ metadata.gz: 82a5eeb29ba45bf1e7eb407371c07922f14c3a7fe8ed0777b555ebbfa952a3dc35b303e0e477abe5c467bd01112e678ce31804051a52b92beb0bea2a323c5264
7
+ data.tar.gz: e24d863f0a3649d729242bd6104403d5642a6e04c44fc52adb6856d98c55e20c06ff4b13e4ca553ba01299b726ad89193ee97bcd322709deb060f681bbfeae6d
data/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@ 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.26.0 - 2022-10-03
6
+
7
+ ### Added
8
+ * [#2636](https://github.com/Shopify/shopify-cli/pull/2636): Show store when the CLI prompts users to select a theme
9
+
10
+ ## Version 2.25.0 - 2022-09-14
11
+
12
+ ### Added
13
+ * [#2600](https://github.com/Shopify/shopify-cli/pull/2600): Add support to the `SIGTERM` signal
14
+ * [#2602](https://github.com/Shopify/shopify-cli/pull/2602): Add `--only/--ignore` support to the `theme serve` command
15
+
16
+ ### Fixed
17
+ * [#2607](https://github.com/Shopify/shopify-cli/pull/2607): Fix proxy to redirect to host and port set by cli
18
+
5
19
  ## Version 2.24.0 - 2022-08-29
6
20
 
7
21
  ### Fixed
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shopify-cli (2.24.0)
4
+ shopify-cli (2.26.0)
5
5
  bugsnag (~> 6.22)
6
6
  listen (~> 3.7.0)
7
7
  theme-check (~> 1.11.0)
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Shopify CLI 2.0
2
2
 
3
- <a href=""><img src="https://github.com/shopify/shopify-cli/workflows/CI/badge.svg" alt="Shopify"></a>
3
+ <a href="https://github.com/Shopify/shopify-cli/actions/workflows/shopify.yml"><img src="https://github.com/shopify/shopify-cli/actions/workflows/shopify.yml/badge.svg" alt="Shopify"></a>
4
4
  <img src="https://img.shields.io/github/v/release/shopify/shopify-cli?include_prereleases&style=flat-square" alt="Latest Version">
5
5
  <img src="https://img.shields.io/github/forks/shopify/shopify-cli?style=flat-square" alt="GitHub forks">
6
6
  <img src="https://img.shields.io/github/stars/shopify/shopify-cli?style=flat-square" alt="GitHub stars">
data/dev.yml CHANGED
@@ -27,6 +27,3 @@ test:
27
27
  commands:
28
28
  style:
29
29
  run: bundle exec rubocop .
30
- test:script:
31
- desc: "Run all script-related tests"
32
- run: TEST='test/project_types/script/**/*.rb' bundle exec rake test $@
@@ -17,6 +17,24 @@ module Extension
17
17
  parser.on("-p", "--port=PORT", "Specify the port to use") do |port|
18
18
  flags[:port] = port.to_i
19
19
  end
20
+ parser.on("-T", "--theme=NAME_OR_ID", "Theme ID or name of the theme app extension host theme.") do |theme|
21
+ flags[:theme] = theme
22
+ end
23
+ parser.on("--api-key=API_KEY", "Connect your extension and app by inserting your app's API key") do |api_key|
24
+ flags[:api_key] = api_key.gsub('"', "")
25
+ end
26
+ parser.on("--api-secret=API_SECRET", "The API secret of the app the script is registered with.") do |api_secret|
27
+ flags[:api_secret] = api_secret.gsub('"', "")
28
+ end
29
+ parser.on("--extension-id=EXTENSION_ID", "The id of the extension's registration.") do |registration_id|
30
+ flags[:registration_id] = registration_id.gsub('"', "")
31
+ end
32
+ parser.on("--extension-title=EXTENSION_TITLE", "The title of the extension") do |extension_title|
33
+ flags[:extension_title] = extension_title.gsub('"', "")
34
+ end
35
+ parser.on("--extension-type=EXTENSION_TYPE", "The type of the extension") do |extension_type|
36
+ flags[:extension_type] = extension_type.gsub('"', "")
37
+ end
20
38
  end
21
39
 
22
40
  class RuntimeConfiguration
@@ -26,13 +44,27 @@ module Extension
26
44
  property :resource_url, accepts: String, default: nil
27
45
  property! :tunnel_requested, accepts: [true, false], reader: :tunnel_requested?, default: true
28
46
  property :port, accepts: (1...(2**16))
47
+ property :theme, accepts: String, default: nil
48
+ property :api_key, accepts: String, default: nil
49
+ property :api_secret, accepts: String, default: nil
50
+ property :registration_id, accepts: String, default: nil
51
+ property :extension_title, accepts: String, default: nil
52
+ property :extension_type, accepts: String, default: nil
29
53
  end
30
54
 
31
- def call(_args, _command_name)
55
+ def call(args, _command_name)
56
+ @ctx.root = args.first || @ctx.root
57
+
32
58
  config = RuntimeConfiguration.new(
33
59
  tunnel_requested: tunnel_requested?,
34
60
  resource_url: options.flags[:resource_url],
35
- port: options.flags[:port]
61
+ port: options.flags[:port],
62
+ theme: options.flags[:theme],
63
+ api_key: options.flags[:api_key],
64
+ api_secret: options.flags[:api_secret],
65
+ registration_id: options.flags[:registration_id],
66
+ extension_title: options.flags[:extension_title],
67
+ extension_type: options.flags[:extension_type],
36
68
  )
37
69
 
38
70
  ShopifyCLI::Result
@@ -49,6 +81,23 @@ module Extension
49
81
 
50
82
  private
51
83
 
84
+ def project
85
+ return super unless options.flags[:extension_type]
86
+
87
+ @project ||= Extension::Loaders::Project.load(
88
+ context: options.flags[:context],
89
+ directory: @ctx.root,
90
+ api_key: options.flags[:api_key],
91
+ api_secret: options.flags[:api_secret],
92
+ registration_id: options.flags[:registration_id],
93
+ env: {
94
+ ExtensionProjectKeys::TITLE_KEY => options.flags[:extension_title],
95
+ ExtensionProjectKeys::REGISTRATION_ID_KEY => options.flags[:registration_id],
96
+ ExtensionProjectKeys::SPECIFICATION_IDENTIFIER_KEY => options.flags[:extension_type],
97
+ }
98
+ )
99
+ end
100
+
52
101
  def tunnel_requested?
53
102
  tunnel = options.flags[:tunnel]
54
103
  tunnel.nil? || !!tunnel
@@ -87,7 +136,12 @@ module Extension
87
136
  context: @ctx,
88
137
  tunnel_url: runtime_configuration.tunnel_url,
89
138
  port: runtime_configuration.port,
90
- resource_url: runtime_configuration.resource_url
139
+ theme: runtime_configuration.theme,
140
+ api_key: runtime_configuration.api_key,
141
+ api_secret: runtime_configuration.api_secret,
142
+ registration_id: runtime_configuration.registration_id,
143
+ resource_url: runtime_configuration.resource_url,
144
+ project: project,
91
145
  )
92
146
  runtime_configuration
93
147
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  require "shopify_cli"
3
+ require "shopify_cli/environment"
3
4
  require "securerandom"
4
5
 
5
6
  module Extension
@@ -82,7 +83,13 @@ module Extension
82
83
  end
83
84
 
84
85
  def specification_identifier
85
- config[ExtensionProjectKeys::SPECIFICATION_IDENTIFIER_KEY]
86
+ key = ExtensionProjectKeys::SPECIFICATION_IDENTIFIER_KEY
87
+
88
+ if ShopifyCLI::Environment.run_as_subprocess?
89
+ get_extra_field(key)
90
+ else
91
+ config[key]
92
+ end
86
93
  end
87
94
 
88
95
  def registration_id?
@@ -3,12 +3,13 @@
3
3
  module Extension
4
4
  module Loaders
5
5
  module Project
6
- def self.load(context:, directory:, api_key:, registration_id:, api_secret:)
6
+ def self.load(context:, directory:, api_key:, registration_id:, api_secret:, env: {})
7
7
  env_overrides = {
8
8
  "SHOPIFY_API_KEY" => api_key,
9
9
  "SHOPIFY_API_SECRET" => api_secret,
10
10
  "EXTENSION_ID" => registration_id,
11
- }.compact
11
+ }.compact.merge(env)
12
+
12
13
  env_file_present = env_file_exists?(directory)
13
14
  env = if env_file_present
14
15
  ShopifyCLI::Resources::EnvFile.read(directory, overrides: env_overrides)
@@ -102,15 +102,32 @@ module Extension
102
102
  serve: {
103
103
  help: <<~HELP,
104
104
  Serve your extension in a local simulator for development.
105
- Usage: {{command:%s extension serve}}
105
+ Usage: {{command:%s extension serve [ ROOT ]}}
106
106
  Options:
107
- {{command:--tunnel=TUNNEL}} Establish an ngrok tunnel (default: false)
107
+ {{command:-p, --port=PORT}} Local port of the development serve.
108
+ {{command:-T, --theme=NAME_OR_ID}} Theme ID or name of the host theme.
109
+ {{command:--tunnel=TUNNEL}} Establish an ngrok tunnel (default: false).
110
+ {{command:--api-key=API_KEY}} Connect your extension and app by inserting your app's API key (which you can get from your app setup page on shopify.dev).
111
+ {{command:--api-secret=API_SECRET}} The API secret of the app the script is registered with.
112
+ {{command:--extension-id=EXTENSION_ID}} The id of the extension's registration.
108
113
  HELP
109
- frame_title: "Serving extension…",
114
+ frame_title: "Viewing extension…",
110
115
  no_available_ports_found: "No available ports found to run extension.",
111
116
  serve_failure_message: "Failed to run extension code.",
112
117
  serve_missing_information: "Missing shop or api_key.",
113
118
  tunnel_already_running: "A tunnel running on another port has been detected. Close the tunnel and try again.",
119
+ preview_message: <<~PREVIEW_MESSAGE,
120
+ Enable your theme app extension:
121
+ {{green:%s}}
122
+
123
+ Setup your theme app extension in the host theme:
124
+ {{green:%s}}
125
+
126
+ Preview your theme app extension:
127
+ {{green:%s}}
128
+
129
+ (Use Ctrl-C to stop)
130
+ PREVIEW_MESSAGE
114
131
  },
115
132
  tunnel: {
116
133
  duplicate_session: <<~MESSAGE,
@@ -267,9 +284,7 @@ module Extension
267
284
  {{*}} You’re ready to start building {{green:%s}}!
268
285
  MESSAGE
269
286
  },
270
- serve: {
271
- unsupported: "shopify extension serve is not supported for theme app extensions",
272
- },
287
+
273
288
  },
274
289
  },
275
290
  }
@@ -25,7 +25,7 @@ module Extension
25
25
  when "checkout_post_purchase"
26
26
  new(name: "@shopify/post-purchase-ui-extensions", version: "^0.13.2")
27
27
  when "pos_ui_extension"
28
- new(name: "@shopify/retail-ui-extensions", version: "^0.1.0")
28
+ new(name: "@shopify/retail-ui-extensions", version: "^0.12.0")
29
29
  when "web_pixel_extension"
30
30
  nil
31
31
  else
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  require "base64"
3
3
  require "json"
4
+ require "shopify_cli/theme/extension/dev_server"
4
5
 
5
6
  module Extension
6
7
  module Models
@@ -64,16 +65,27 @@ module Extension
64
65
  "Theme App Extension"
65
66
  end
66
67
 
67
- def choose_port?(ctx)
68
- ctx.abort(ctx.message("serve.unsupported"))
68
+ def choose_port?(_ctx)
69
+ false
69
70
  end
70
71
 
71
- def establish_tunnel?(ctx)
72
- ctx.abort(ctx.message("serve.unsupported"))
72
+ def establish_tunnel?(_ctx)
73
+ false
73
74
  end
74
75
 
75
- def serve(ctx)
76
- ctx.abort(ctx.message("serve.unsupported"))
76
+ def serve(**options)
77
+ @ctx = options[:context]
78
+ root = options[:context]&.root
79
+ project = options[:project]
80
+ properties = options
81
+ .slice(:port, :theme)
82
+ .compact
83
+ .merge({
84
+ project: project,
85
+ specification_handler: self,
86
+ })
87
+
88
+ ShopifyCLI::Theme::Extension::DevServer.start(@ctx, root, **properties)
77
89
  end
78
90
 
79
91
  private
@@ -18,85 +18,6 @@ module Script
18
18
  end
19
19
  ShopifyCLI::Commands.register("Script::Command", "script")
20
20
 
21
- # define/autoload project specific Forms
22
- module Forms
23
- autoload :AskOrg, Project.project_filepath("forms/ask_org")
24
- autoload :AskApp, Project.project_filepath("forms/ask_app")
25
- autoload :AskScriptUuid, Project.project_filepath("forms/ask_script_uuid")
26
- autoload :RunAgainstShopifyOrg, Project.project_filepath("forms/run_against_shopify_org")
27
- autoload :Create, Project.project_filepath("forms/create")
28
- autoload :Connect, Project.project_filepath("forms/connect")
29
- autoload :ScriptForm, Project.project_filepath("forms/script_form")
30
- end
31
-
32
- module Tasks
33
- autoload :EnsureEnv, Project.project_filepath("tasks/ensure_env")
34
- end
35
-
36
- module Layers
37
- module Application
38
- autoload :BuildScript, Project.project_filepath("layers/application/build_script")
39
- autoload :ConnectApp, Project.project_filepath("layers/application/connect_app")
40
- autoload :CreateScript, Project.project_filepath("layers/application/create_script")
41
- autoload :PushScript, Project.project_filepath("layers/application/push_script")
42
- autoload :ExtensionPoints, Project.project_filepath("layers/application/extension_points")
43
- autoload :ProjectDependencies, Project.project_filepath("layers/application/project_dependencies")
44
- end
45
-
46
- module Domain
47
- autoload :Errors, Project.project_filepath("layers/domain/errors")
48
- autoload :PushPackage, Project.project_filepath("layers/domain/push_package")
49
- autoload :Metadata, Project.project_filepath("layers/domain/metadata")
50
- autoload :ExtensionPoint, Project.project_filepath("layers/domain/extension_point")
51
- autoload :ScriptConfig, Project.project_filepath("layers/domain/script_config")
52
- autoload :ScriptProject, Project.project_filepath("layers/domain/script_project")
53
- autoload :AppBridge, Project.project_filepath("layers/domain/app_bridge")
54
- end
55
-
56
- module Infrastructure
57
- autoload :Errors, Project.project_filepath("layers/infrastructure/errors")
58
- autoload :CommandRunner, Project.project_filepath("layers/infrastructure/command_runner")
59
- autoload :PushPackageRepository, Project.project_filepath("layers/infrastructure/push_package_repository")
60
- autoload :ExtensionPointRepository, Project.project_filepath("layers/infrastructure/extension_point_repository")
61
- autoload :MetadataRepository, Project.project_filepath("layers/infrastructure/metadata_repository")
62
- autoload :ScriptProjectRepository, Project.project_filepath("layers/infrastructure/script_project_repository")
63
- autoload :ScriptService, Project.project_filepath("layers/infrastructure/script_service")
64
- autoload :ScriptUploader, Project.project_filepath("layers/infrastructure/script_uploader")
65
- autoload :ServiceLocator, Project.project_filepath("layers/infrastructure/service_locator")
66
- autoload :SparseCheckoutDetails, Project.project_filepath("layers/infrastructure/sparse_checkout_details")
67
-
68
- module Languages
69
- autoload :ProjectCreator, Project.project_filepath("layers/infrastructure/languages/project_creator")
70
- autoload :TaskRunner, Project.project_filepath("layers/infrastructure/languages/task_runner")
71
- autoload :TypeScriptProjectCreator,
72
- Project.project_filepath("layers/infrastructure/languages/typescript_project_creator.rb")
73
- autoload :TypeScriptTaskRunner,
74
- Project.project_filepath("layers/infrastructure/languages/typescript_task_runner.rb")
75
- autoload :WasmProjectCreator,
76
- Project.project_filepath("layers/infrastructure/languages/wasm_project_creator.rb")
77
- autoload :WasmTaskRunner,
78
- Project.project_filepath("layers/infrastructure/languages/wasm_task_runner.rb")
79
- autoload :ToolVersionChecker,
80
- Project.project_filepath("layers/infrastructure/languages/tool_version_checker.rb")
81
- end
82
-
83
- module ApiClients
84
- autoload :PartnersProxyApiClient,
85
- Project.project_filepath("layers/infrastructure/api_clients/partners_proxy_api_client")
86
- autoload :ScriptServiceApiClient,
87
- Project.project_filepath("layers/infrastructure/api_clients/script_service_api_client")
88
- end
89
- end
90
- end
91
-
92
- module UI
93
- autoload :ErrorHandler, Project.project_filepath("ui/error_handler")
94
- autoload :PrintingSpinner, Project.project_filepath("ui/printing_spinner")
95
- autoload :StrictSpinner, Project.project_filepath("ui/strict_spinner")
96
- end
97
-
98
- autoload :Errors, Project.project_filepath("errors")
99
-
100
21
  module Loaders
101
22
  autoload :Project, Script::Project.project_filepath("loaders/project")
102
23
  autoload :SpecificationHandler, Script::Project.project_filepath("loaders/specification_handler")
@@ -2,19 +2,14 @@
2
2
  module Script
3
3
  class Command
4
4
  class Connect < ShopifyCLI::Command::SubCommand
5
- prerequisite_task :ensure_authenticated
6
- prerequisite_task ensure_project_type: :script
7
-
8
- recommend_default_ruby_range
5
+ hidden_feature
9
6
 
10
7
  def call(_args, _)
11
- Layers::Application::ConnectApp.call(ctx: @ctx, force: true)
12
- rescue StandardError => e
13
- UI::ErrorHandler.pretty_print_and_raise(e, failed_op: @ctx.message("script.connect.error.operation_failed"))
8
+ @ctx.abort(@ctx.message("script.deprecated"))
14
9
  end
15
10
 
16
11
  def self.help
17
- ShopifyCLI::Context.new.message("script.connect.help", ShopifyCLI::TOOL_NAME, ShopifyCLI::TOOL_NAME)
12
+ ShopifyCLI::Context.new.message("script.deprecated")
18
13
  end
19
14
  end
20
15
  end
@@ -3,9 +3,7 @@
3
3
  module Script
4
4
  class Command
5
5
  class Create < ShopifyCLI::Command::SubCommand
6
- prerequisite_task :ensure_authenticated
7
-
8
- recommend_default_ruby_range
6
+ hidden_feature
9
7
 
10
8
  options do |parser, flags|
11
9
  parser.on("--title=TITLE") { |title| flags[:title] = title }
@@ -14,35 +12,12 @@ module Script
14
12
  parser.on("--branch=BRANCH") { |branch| flags[:branch] = branch }
15
13
  end
16
14
 
17
- def call(args, _name)
18
- form = Forms::Create.ask(@ctx, args, options.flags)
19
- return @ctx.puts(self.class.help) if form.nil?
20
-
21
- unless !form.title.empty? && form.extension_point
22
- return @ctx.puts(self.class.help)
23
- end
24
-
25
- project = Layers::Application::CreateScript.call(
26
- ctx: @ctx,
27
- language: options.flags[:language]&.downcase || "wasm",
28
- sparse_checkout_branch: options.flags[:branch] || "main",
29
- title: form.title,
30
- extension_point_type: form.extension_point,
31
- )
32
- @ctx.puts(@ctx.message("script.create.change_directory_notice", project.title))
33
- rescue StandardError => e
34
- UI::ErrorHandler.pretty_print_and_raise(e, failed_op: @ctx.message("script.create.error.operation_failed"))
15
+ def call(_args, _)
16
+ @ctx.abort(@ctx.message("script.deprecated"))
35
17
  end
36
18
 
37
19
  def self.help
38
- allowed_apis = Layers::Application::ExtensionPoints.available_types.map { |type| "{{cyan:#{type}}}" }
39
- allowed_languages = Layers::Application::ExtensionPoints.all_languages.map { |lang| "{{cyan:#{lang}}}" }
40
- ShopifyCLI::Context.message(
41
- "script.create.help",
42
- ShopifyCLI::TOOL_NAME,
43
- allowed_apis.join(", "),
44
- allowed_languages.join(", ")
45
- )
20
+ ShopifyCLI::Context.new.message("script.deprecated")
46
21
  end
47
22
  end
48
23
  end
@@ -12,17 +12,12 @@ module Script
12
12
  parser.on("--out=OUT") { |out_file| flags[:out_file] = out_file }
13
13
  end
14
14
 
15
- def call(*)
16
- source = options.flags[:in_file]
17
- dest = options.flags[:out_file]
18
-
19
- @ctx.abort(@ctx.message("script.javy.errors.invalid_arguments", ShopifyCLI::TOOL_NAME)) unless source
20
-
21
- ::Javy.build(source: source, dest: dest).unwrap { |e| @ctx.abort(e.message) }
15
+ def call(_args, _)
16
+ @ctx.abort(@ctx.message("script.deprecated"))
22
17
  end
23
18
 
24
19
  def self.help
25
- ShopifyCLI::Context.message("script.javy.help", ShopifyCLI::TOOL_NAME)
20
+ ShopifyCLI::Context.new.message("script.deprecated")
26
21
  end
27
22
  end
28
23
  end
@@ -3,9 +3,7 @@
3
3
  module Script
4
4
  class Command
5
5
  class Push < ShopifyCLI::Command::SubCommand
6
- prerequisite_task ensure_project_type: :script
7
-
8
- recommend_default_ruby_range
6
+ hidden_feature
9
7
 
10
8
  options do |parser, flags|
11
9
  parser.on("--force") { |t| flags[:force] = t }
@@ -16,47 +14,12 @@ module Script
16
14
  end
17
15
  end
18
16
 
19
- def call(_args, _name)
20
- connect_to_app
21
- project = load_project
22
- push(project: project)
23
- rescue StandardError => e
24
- UI::ErrorHandler.pretty_print_and_raise(e,
25
- failed_op: @ctx.message("script.push.error.operation_failed"))
26
- end
27
-
28
- def push(project:)
29
- force = options.flags.key?(:force)
30
- api_key = project.env[:api_key]
31
- uuid = project.env[:extra]["UUID"]
32
-
33
- if ShopifyCLI::Environment.interactive? || (uuid && !uuid.empty?)
34
- Layers::Application::PushScript.call(ctx: @ctx, force: force, project: project)
35
- @ctx.puts(@ctx.message("script.push.script_pushed", api_key: api_key))
36
- else
37
- message = @ctx.message("script.error.missing_push_options_ci", "--uuid")
38
- message += @ctx.message("script.error.missing_push_options_ci_solution", ShopifyCLI::TOOL_NAME)
39
- raise ShopifyCLI::Abort, message
40
- end
41
- end
42
-
43
- def load_project
44
- Script::Loaders::Project.load(
45
- directory: Dir.pwd,
46
- api_key: options.flags[:api_key],
47
- api_secret: options.flags[:api_secret],
48
- uuid: options.flags[:uuid]
49
- )
50
- end
51
-
52
- def connect_to_app
53
- if ShopifyCLI::Environment.interactive?
54
- Layers::Application::ConnectApp.call(ctx: @ctx)
55
- end
17
+ def call(_args, _)
18
+ @ctx.abort(@ctx.message("script.deprecated"))
56
19
  end
57
20
 
58
21
  def self.help
59
- ShopifyCLI::Context.message("script.push.help", ShopifyCLI::TOOL_NAME)
22
+ ShopifyCLI::Context.new.message("script.deprecated")
60
23
  end
61
24
  end
62
25
  end