shopify-cli 1.9.1 → 1.13.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.github/PULL_REQUEST_TEMPLATE.md +1 -0
  3. data/.github/workflows/build.yml +28 -0
  4. data/.github/workflows/release.yml +2 -4
  5. data/CHANGELOG.md +28 -0
  6. data/Gemfile.lock +1 -1
  7. data/README.md +2 -1
  8. data/lib/project_types/extension/cli.rb +6 -2
  9. data/lib/project_types/extension/commands/serve.rb +69 -1
  10. data/lib/project_types/extension/commands/tunnel.rb +3 -1
  11. data/lib/project_types/extension/extension_project.rb +1 -0
  12. data/lib/project_types/extension/features/argo.rb +15 -24
  13. data/lib/project_types/extension/features/argo_runtime.rb +91 -0
  14. data/lib/project_types/extension/features/argo_serve.rb +35 -27
  15. data/lib/project_types/extension/features/argo_serve_options.rb +42 -0
  16. data/lib/project_types/extension/messages/messages.rb +5 -1
  17. data/lib/project_types/extension/models/npm_package.rb +14 -0
  18. data/lib/project_types/extension/models/specification.rb +1 -0
  19. data/lib/project_types/extension/models/specification_handlers/checkout_argo_extension.rb +18 -0
  20. data/lib/project_types/extension/models/specification_handlers/default.rb +33 -3
  21. data/lib/project_types/extension/tasks/choose_next_available_port.rb +36 -0
  22. data/lib/project_types/extension/tasks/configure_features.rb +2 -0
  23. data/lib/project_types/extension/tasks/find_npm_packages.rb +106 -0
  24. data/lib/project_types/script/cli.rb +17 -12
  25. data/lib/project_types/script/commands/push.rb +6 -2
  26. data/lib/project_types/script/config/extension_points.yml +2 -3
  27. data/lib/project_types/script/graphql/get_app_scripts.graphql +6 -0
  28. data/lib/project_types/script/layers/application/create_script.rb +2 -2
  29. data/lib/project_types/script/layers/application/push_script.rb +2 -1
  30. data/lib/project_types/script/layers/domain/errors.rb +0 -2
  31. data/lib/project_types/script/layers/domain/script_project.rb +17 -1
  32. data/lib/project_types/script/layers/infrastructure/command_runner.rb +19 -0
  33. data/lib/project_types/script/layers/infrastructure/errors.rb +12 -3
  34. data/lib/project_types/script/layers/infrastructure/languages/assemblyscript_project_creator.rb +97 -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 +4 -5
  41. data/lib/project_types/script/layers/infrastructure/script_project_repository.rb +22 -29
  42. data/lib/project_types/script/layers/infrastructure/script_service.rb +7 -1
  43. data/lib/project_types/script/messages/messages.rb +14 -4
  44. data/lib/project_types/script/tasks/ensure_env.rb +104 -0
  45. data/lib/project_types/script/ui/error_handler.rb +7 -6
  46. data/lib/shopify-cli/admin_api.rb +7 -4
  47. data/lib/shopify-cli/messages/messages.rb +48 -43
  48. data/lib/shopify-cli/method_object.rb +4 -4
  49. data/lib/shopify-cli/oauth.rb +7 -1
  50. data/lib/shopify-cli/partners_api.rb +7 -4
  51. data/lib/shopify-cli/partners_api/organizations.rb +3 -3
  52. data/lib/shopify-cli/resources/env_file.rb +1 -1
  53. data/lib/shopify-cli/shopifolk.rb +1 -1
  54. data/lib/shopify-cli/tasks/select_org_and_shop.rb +6 -4
  55. data/lib/shopify-cli/tunnel.rb +22 -1
  56. data/lib/shopify-cli/version.rb +1 -1
  57. data/lib/shopify_cli.rb +0 -1
  58. metadata +19 -11
  59. data/.travis.yml +0 -14
  60. data/lib/project_types/extension/features/argo_renderer_package.rb +0 -47
  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
@@ -52,8 +52,8 @@ module ShopifyCli
52
52
  # invokes the original `call` implementation and wraps its return value
53
53
  # into a result object.
54
54
  #
55
- def call(*args, **kwargs)
56
- Result.wrap { super(*args, **kwargs) }.call
55
+ def call(*args, **kwargs, &block)
56
+ Result.wrap { kwargs.any? ? super(*args, **kwargs, &block) : super(*args, &block) }.call
57
57
  end
58
58
  end
59
59
 
@@ -64,10 +64,10 @@ module ShopifyCli
64
64
  # initializer or to `call`. If the keyword argument matches the name of
65
65
  # property, it is forwarded to the initializer, otherwise to call.
66
66
  #
67
- def call(*args, **kwargs)
67
+ def call(*args, **kwargs, &block)
68
68
  properties.keys.yield_self do |properties|
69
69
  new(**kwargs.slice(*properties))
70
- .call(*args, **kwargs.slice(*(kwargs.keys - properties)))
70
+ .call(*args, **kwargs.slice(*(kwargs.keys - properties)), &block)
71
71
  end
72
72
  end
73
73
 
@@ -80,7 +80,13 @@ module ShopifyCli
80
80
  end
81
81
 
82
82
  def output_authentication_info(uri)
83
- login_location = ctx.message(service == "admin" ? "core.oauth.location.admin" : "core.oauth.location.partner")
83
+ login_location = if service == "admin"
84
+ ctx.message("core.oauth.location.admin")
85
+ elsif Shopifolk.acting_as_shopify_organization?
86
+ ctx.message("core.oauth.location.shopifolk")
87
+ else
88
+ ctx.message("core.oauth.location.partner")
89
+ end
84
90
  ctx.puts(ctx.message("core.oauth.authentication_required", login_location))
85
91
  ctx.open_url!(uri)
86
92
  end
@@ -59,11 +59,14 @@ module ShopifyCli
59
59
 
60
60
  private
61
61
 
62
- def authenticated_req(ctx)
63
- yield
62
+ def authenticated_req(ctx, &block)
63
+ CLI::Kit::Util
64
+ .begin(&block)
65
+ .retry_after(API::APIRequestUnauthorizedError, retries: 1) do
66
+ authenticate(ctx)
67
+ end
64
68
  rescue API::APIRequestUnauthorizedError
65
- authenticate(ctx)
66
- retry
69
+ ctx.abort(ctx.message("core.api.error.failed_auth"))
67
70
  rescue API::APIRequestNotFoundError
68
71
  ctx.puts(ctx.message("core.partners_api.error.account_not_found", ShopifyCli::TOOL_NAME))
69
72
  end
@@ -4,7 +4,7 @@ module ShopifyCli
4
4
  class << self
5
5
  def fetch_all(ctx)
6
6
  resp = PartnersAPI.query(ctx, "all_organizations")
7
- (resp.dig("data", "organizations", "nodes") || []).map do |org|
7
+ (resp&.dig("data", "organizations", "nodes") || []).map do |org|
8
8
  org["stores"] = (org.dig("stores", "nodes") || [])
9
9
  org
10
10
  end
@@ -12,7 +12,7 @@ module ShopifyCli
12
12
 
13
13
  def fetch(ctx, id:)
14
14
  resp = PartnersAPI.query(ctx, "find_organization", id: id)
15
- org = resp.dig("data", "organizations", "nodes").first
15
+ org = resp&.dig("data", "organizations", "nodes")&.first
16
16
  return nil if org.nil?
17
17
  org["stores"] = (org.dig("stores", "nodes") || [])
18
18
  org
@@ -20,7 +20,7 @@ module ShopifyCli
20
20
 
21
21
  def fetch_with_app(ctx)
22
22
  resp = PartnersAPI.query(ctx, "all_orgs_with_apps")
23
- (resp.dig("data", "organizations", "nodes") || []).map do |org|
23
+ (resp&.dig("data", "organizations", "nodes") || []).map do |org|
24
24
  org["stores"] = (org.dig("stores", "nodes") || [])
25
25
  org["apps"] = (org.dig("apps", "nodes") || [])
26
26
  org
@@ -22,7 +22,7 @@ module ShopifyCli
22
22
  def parse(directory)
23
23
  File.read(File.join(directory, FILENAME))
24
24
  .gsub("\r\n", "\n").split("\n").each_with_object({}) do |line, output|
25
- match = /\A([A-Za-z_0-9]+)=(.*)\z/.match(line)
25
+ match = /\A([A-Za-z_0-9]+)\s*=\s*(.*)\z/.match(line)
26
26
  if match
27
27
  key = match[1]
28
28
  output[key] = case match[2]
@@ -33,7 +33,7 @@ module ShopifyCli
33
33
  end
34
34
 
35
35
  def acting_as_shopify_organization?
36
- !!@acting_as_shopify_organization || (Project.has_current? && Project.current.config["shopify_organization"])
36
+ !!(@acting_as_shopify_organization || (Project.has_current? && Project.current.config["shopify_organization"]))
37
37
  end
38
38
 
39
39
  def reset
@@ -35,14 +35,16 @@ module ShopifyCli
35
35
  @organization ||= if !organization_id.nil?
36
36
  org = ShopifyCli::PartnersAPI::Organizations.fetch(ctx, id: organization_id)
37
37
  if org.nil?
38
- ctx.puts(ctx.message("core.tasks.select_org_and_shop.error.authentication_issue", ShopifyCli::TOOL_NAME))
38
+ ctx.puts(ctx.message("core.tasks.select_org_and_shop.authentication_issue", ShopifyCli::TOOL_NAME))
39
39
  ctx.abort(ctx.message("core.tasks.select_org_and_shop.error.organization_not_found"))
40
40
  end
41
41
  org
42
42
  elsif organizations.count == 0
43
- ctx.puts(ctx.message("core.tasks.select_org_and_shop.error.partners_notice"))
44
- ctx.puts(ctx.message("core.tasks.select_org_and_shop.authentication_issue", ShopifyCli::TOOL_NAME))
45
- ctx.abort(ctx.message("core.tasks.select_org_and_shop.error.no_organizations"))
43
+ if Shopifolk.acting_as_shopify_organization?
44
+ ctx.abort(ctx.message("core.tasks.select_org_and_shop.error.shopifolk_notice", ShopifyCli::TOOL_NAME))
45
+ else
46
+ ctx.abort(ctx.message("core.tasks.select_org_and_shop.error.no_organizations"))
47
+ end
46
48
  elsif organizations.count == 1
47
49
  org = organizations.first
48
50
  ctx.puts(ctx.message("core.tasks.select_org_and_shop.organization", org["businessName"], org["id"]))
@@ -2,6 +2,7 @@ require "json"
2
2
  require "fileutils"
3
3
  require "shopify_cli"
4
4
  require "forwardable"
5
+ require "uri"
5
6
 
6
7
  module ShopifyCli
7
8
  ##
@@ -11,7 +12,7 @@ module ShopifyCli
11
12
  class Tunnel
12
13
  extend SingleForwardable
13
14
 
14
- def_delegators :new, :start, :stop, :auth, :stats, :urls
15
+ def_delegators :new, :start, :stop, :auth, :stats, :urls, :running_on?
15
16
 
16
17
  class FetchUrlError < RuntimeError; end
17
18
  class NgrokError < RuntimeError; end
@@ -26,6 +27,7 @@ module ShopifyCli
26
27
 
27
28
  NGROK_TUNNELS_URI = URI.parse("http://localhost:4040/api/tunnels")
28
29
  TUNNELS_FIELD = "tunnels"
30
+ TUNNEL_ADDRESS_KEY_PATH = ["config", "addr"]
29
31
  PUBLIC_URL_FIELD = "public_url"
30
32
 
31
33
  ##
@@ -120,6 +122,25 @@ module ShopifyCli
120
122
  []
121
123
  end
122
124
 
125
+ ##
126
+ # Returns Boolean if a tunnel is running on a given port
127
+ #
128
+ # #### Parameters
129
+ #
130
+ # * `port` - port to check
131
+ #
132
+ # #### Returns
133
+ #
134
+ # * true / false
135
+ #
136
+ def running_on?(port)
137
+ extract_port = ->(tunnel) { URI(tunnel.dig(*TUNNEL_ADDRESS_KEY_PATH)).port }
138
+ matches_port = ->(occupied_port) { occupied_port == port }
139
+ stats.fetch(TUNNELS_FIELD, []).map(&extract_port).any?(&matches_port)
140
+ rescue
141
+ false
142
+ end
143
+
123
144
  private
124
145
 
125
146
  def install(ctx)
@@ -1,3 +1,3 @@
1
1
  module ShopifyCli
2
- VERSION = "1.9.1"
2
+ VERSION = "1.13.1"
3
3
  end
data/lib/shopify_cli.rb CHANGED
@@ -110,7 +110,6 @@ module ShopifyCli
110
110
  autoload :JsSystem, "shopify-cli/js_system"
111
111
  autoload :MethodObject, "shopify-cli/method_object"
112
112
  autoload :LazyDelegator, "shopify-cli/lazy_delegator"
113
- autoload :Log, "shopify-cli/log"
114
113
  autoload :OAuth, "shopify-cli/oauth"
115
114
  autoload :Options, "shopify-cli/options"
116
115
  autoload :PartnersAPI, "shopify-cli/partners_api"
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: 1.9.1
4
+ version: 1.13.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-01 00:00:00.000000000 Z
11
+ date: 2021-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -77,6 +77,7 @@ files:
77
77
  - ".github/ISSUE_TEMPLATE.md"
78
78
  - ".github/PULL_REQUEST_TEMPLATE.md"
79
79
  - ".github/probots.yml"
80
+ - ".github/workflows/build.yml"
80
81
  - ".github/workflows/release.yml"
81
82
  - ".github/workflows/triage.yml"
82
83
  - ".gitignore"
@@ -85,7 +86,6 @@ files:
85
86
  - ".ruby-version"
86
87
  - ".tmp/.gitkeep"
87
88
  - ".tmp/sv/.gitkeep"
88
- - ".travis.yml"
89
89
  - CHANGELOG.md
90
90
  - Gemfile
91
91
  - Gemfile.lock
@@ -144,8 +144,9 @@ files:
144
144
  - lib/project_types/extension/features/argo.rb
145
145
  - lib/project_types/extension/features/argo_config.rb
146
146
  - lib/project_types/extension/features/argo_dependencies.rb
147
- - lib/project_types/extension/features/argo_renderer_package.rb
147
+ - lib/project_types/extension/features/argo_runtime.rb
148
148
  - lib/project_types/extension/features/argo_serve.rb
149
+ - lib/project_types/extension/features/argo_serve_options.rb
149
150
  - lib/project_types/extension/features/argo_setup.rb
150
151
  - lib/project_types/extension/features/argo_setup_step.rb
151
152
  - lib/project_types/extension/features/argo_setup_steps.rb
@@ -157,13 +158,16 @@ files:
157
158
  - lib/project_types/extension/messages/messages.rb
158
159
  - lib/project_types/extension/models/app.rb
159
160
  - lib/project_types/extension/models/lazy_specification_handler.rb
161
+ - lib/project_types/extension/models/npm_package.rb
160
162
  - lib/project_types/extension/models/registration.rb
161
163
  - lib/project_types/extension/models/specification.rb
164
+ - lib/project_types/extension/models/specification_handlers/checkout_argo_extension.rb
162
165
  - lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb
163
166
  - lib/project_types/extension/models/specification_handlers/default.rb
164
167
  - lib/project_types/extension/models/specifications.rb
165
168
  - lib/project_types/extension/models/validation_error.rb
166
169
  - lib/project_types/extension/models/version.rb
170
+ - lib/project_types/extension/tasks/choose_next_available_port.rb
167
171
  - lib/project_types/extension/tasks/configure_features.rb
168
172
  - lib/project_types/extension/tasks/converters/app_converter.rb
169
173
  - lib/project_types/extension/tasks/converters/registration_converter.rb
@@ -171,6 +175,7 @@ files:
171
175
  - lib/project_types/extension/tasks/converters/version_converter.rb
172
176
  - lib/project_types/extension/tasks/create_extension.rb
173
177
  - lib/project_types/extension/tasks/fetch_specifications.rb
178
+ - lib/project_types/extension/tasks/find_npm_packages.rb
174
179
  - lib/project_types/extension/tasks/get_app.rb
175
180
  - lib/project_types/extension/tasks/get_apps.rb
176
181
  - lib/project_types/extension/tasks/update_draft.rb
@@ -215,6 +220,7 @@ files:
215
220
  - lib/project_types/script/errors.rb
216
221
  - lib/project_types/script/forms/create.rb
217
222
  - lib/project_types/script/graphql/app_script_update_or_create.graphql
223
+ - lib/project_types/script/graphql/get_app_scripts.graphql
218
224
  - lib/project_types/script/graphql/script_service_proxy.graphql
219
225
  - lib/project_types/script/layers/application/build_script.rb
220
226
  - lib/project_types/script/layers/application/create_script.rb
@@ -227,18 +233,20 @@ files:
227
233
  - lib/project_types/script/layers/domain/metadata.rb
228
234
  - lib/project_types/script/layers/domain/push_package.rb
229
235
  - lib/project_types/script/layers/domain/script_project.rb
230
- - lib/project_types/script/layers/infrastructure/assemblyscript_project_creator.rb
231
- - lib/project_types/script/layers/infrastructure/assemblyscript_task_runner.rb
236
+ - lib/project_types/script/layers/infrastructure/command_runner.rb
232
237
  - lib/project_types/script/layers/infrastructure/errors.rb
233
238
  - lib/project_types/script/layers/infrastructure/extension_point_repository.rb
234
- - lib/project_types/script/layers/infrastructure/project_creator.rb
239
+ - lib/project_types/script/layers/infrastructure/languages/assemblyscript_project_creator.rb
240
+ - lib/project_types/script/layers/infrastructure/languages/assemblyscript_task_runner.rb
241
+ - lib/project_types/script/layers/infrastructure/languages/project_creator.rb
242
+ - lib/project_types/script/layers/infrastructure/languages/rust_project_creator.rb
243
+ - lib/project_types/script/layers/infrastructure/languages/rust_task_runner.rb
244
+ - lib/project_types/script/layers/infrastructure/languages/task_runner.rb
235
245
  - lib/project_types/script/layers/infrastructure/push_package_repository.rb
236
- - lib/project_types/script/layers/infrastructure/rust_project_creator.rb
237
- - lib/project_types/script/layers/infrastructure/rust_task_runner.rb
238
246
  - lib/project_types/script/layers/infrastructure/script_project_repository.rb
239
247
  - lib/project_types/script/layers/infrastructure/script_service.rb
240
- - lib/project_types/script/layers/infrastructure/task_runner.rb
241
248
  - lib/project_types/script/messages/messages.rb
249
+ - lib/project_types/script/tasks/ensure_env.rb
242
250
  - lib/project_types/script/ui/error_handler.rb
243
251
  - lib/project_types/script/ui/printing_spinner.rb
244
252
  - lib/project_types/script/ui/strict_spinner.rb
@@ -463,7 +471,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
463
471
  - !ruby/object:Gem::Version
464
472
  version: '0'
465
473
  requirements: []
466
- rubygems_version: 3.0.3
474
+ rubygems_version: 3.2.17
467
475
  signing_key:
468
476
  specification_version: 4
469
477
  summary: Shopify CLI helps you build Shopify apps faster.
data/.travis.yml DELETED
@@ -1,14 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 3.0.0
4
- - 2.5.8
5
- - 2.6.6
6
- - 2.7.1
7
- before_install:
8
- - gem install bundler -v '1.17.3'
9
- cache:
10
- bundler: true
11
- install:
12
- - bundle install
13
- script:
14
- - bundle exec rake
@@ -1,47 +0,0 @@
1
- module Extension
2
- module Features
3
- class ArgoRendererPackage
4
- include SmartProperties
5
-
6
- ARGO_CHECKOUT = "@shopify/argo-checkout"
7
- ARGO_ADMIN = "@shopify/argo-admin"
8
- ARGO_POST_PURCHASE = "@shopify/argo-post-purchase"
9
-
10
- PACKAGE_NAMES = [
11
- ARGO_CHECKOUT,
12
- ARGO_ADMIN,
13
- ARGO_POST_PURCHASE
14
- ].freeze
15
- MINIMUM_ARGO_VERSION = "0.9.3".freeze
16
-
17
- property! :package_name, accepts: PACKAGE_NAMES
18
- property! :version, accepts: String
19
-
20
- class << self
21
- def from_package_manager(package_manager_output)
22
- pattern = /(?<name>#{PACKAGE_NAMES.join("|")})@(?<version>\d.*)$/
23
- match = package_manager_output.match(pattern)
24
- raise PackageNotFound, package_manager_output if match.nil?
25
- return new(package_name: match[:name], version: match[:version].strip)
26
- end
27
- end
28
-
29
- def checkout?
30
- package_name == ARGO_CHECKOUT
31
- end
32
-
33
- def admin?
34
- package_name == ARGO_ADMIN
35
- end
36
-
37
- ##
38
- # Temporarily returns false in all cases as the argo webpack server is
39
- # unable to handle the UUID flag.
40
- def supports_uuid_flag?
41
- return false
42
- # return false if checkout?
43
- # Gem::Version.new(version) > Gem::Version.new(MINIMUM_ARGO_VERSION)
44
- end
45
- end
46
- end
47
- end
@@ -1,100 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Script
4
- module Layers
5
- module Infrastructure
6
- class AssemblyScriptProjectCreator
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
- BOOTSTRAP = "npx --no-install shopify-scripts-toolchain-as bootstrap --from %{extension_point} --dest %{base}"
14
- BUILD = "shopify-scripts-toolchain-as build --src src/shopify_main.ts " \
15
- "--binary build/%{script_name}.wasm --metadata build/metadata.json"
16
- MIN_NODE_VERSION = "14.5.0"
17
- ASC_ARGS = "-- --lib node_modules --optimize --use Date="
18
-
19
- def setup_dependencies
20
- write_npmrc
21
- write_package_json
22
- end
23
-
24
- def bootstrap
25
- out, status = ctx.capture2e(bootstap_command)
26
- raise Domain::Errors::ServiceFailureError, out unless status.success?
27
- end
28
-
29
- private
30
-
31
- def write_npmrc
32
- ctx.system(
33
- "npm", "--userconfig", "./.npmrc", "config", "set", "@shopify:registry", "https://registry.npmjs.com"
34
- )
35
- ctx.system(
36
- "npm", "--userconfig", "./.npmrc", "config", "set", "engine-strict", "true"
37
- )
38
- end
39
-
40
- def extension_point_version
41
- if extension_point.sdks.assemblyscript.versioned?
42
- return extension_point.sdks.assemblyscript.version
43
- end
44
-
45
- out, status = ctx.capture2e("npm show #{extension_point.sdks.assemblyscript.package} version --json")
46
- raise Domain::Errors::ServiceFailureError, out unless status.success?
47
- "^#{JSON.parse(out)}"
48
- end
49
-
50
- def write_package_json
51
- package_json = <<~HERE
52
- {
53
- "name": "#{script_name}",
54
- "version": "1.0.0",
55
- "devDependencies": {
56
- "@shopify/scripts-sdk-as": "#{extension_point.sdks.assemblyscript.sdk_version}",
57
- "@shopify/scripts-toolchain-as": "#{extension_point.sdks.assemblyscript.toolchain_version}",
58
- "#{extension_point.sdks.assemblyscript.package}": "#{extension_point_version}",
59
- "@as-pect/cli": "^6.0.0",
60
- "assemblyscript": "^0.18.13"
61
- },
62
- "scripts": {
63
- "test": "asp --summary --verbose",
64
- "build": "#{build_command}"
65
- },
66
- "engines": {
67
- "node": ">=#{MIN_NODE_VERSION}"
68
- }
69
- }
70
- HERE
71
- ctx.write("package.json", package_json)
72
- end
73
-
74
- def bootstap_command
75
- type = extension_point.dasherize_type
76
- base_command = format(BOOTSTRAP, extension_point: type, base: path_to_project)
77
- domain = extension_point.domain
78
-
79
- if domain.nil?
80
- base_command
81
- else
82
- "#{base_command} --domain #{domain}"
83
- end
84
- end
85
-
86
- def build_command
87
- type = extension_point.dasherize_type
88
- base_command = format(BUILD, script_name: script_name)
89
- domain = extension_point.domain
90
-
91
- if domain.nil?
92
- "#{base_command} #{ASC_ARGS}"
93
- else
94
- "#{base_command} --domain #{domain} --ep #{type} #{ASC_ARGS}"
95
- end
96
- end
97
- end
98
- end
99
- end
100
- end