shopify-cli 2.15.6 → 2.17.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/CODEOWNERS +4 -4
- data/.github/workflows/shopify.yml +0 -33
- data/CHANGELOG.md +35 -1
- data/Gemfile.lock +4 -4
- data/Tests.dockerfile +1 -1
- data/ext/shopify-extensions/version +1 -1
- data/lib/graphql/find_organization_with_apps.graphql +20 -0
- data/lib/project_types/extension/cli.rb +3 -0
- data/lib/project_types/extension/commands/build.rb +0 -2
- data/lib/project_types/extension/commands/create.rb +6 -0
- data/lib/project_types/extension/commands/serve.rb +8 -3
- data/lib/project_types/extension/features/argo.rb +0 -31
- data/lib/project_types/extension/features/argo_config.rb +0 -1
- data/lib/project_types/extension/features/argo_serve.rb +1 -1
- data/lib/project_types/extension/messages/messages.rb +23 -0
- data/lib/project_types/extension/models/development_server.rb +2 -1
- data/lib/project_types/extension/models/development_server_requirements.rb +24 -4
- data/lib/project_types/extension/models/npm_package.rb +15 -3
- data/lib/project_types/extension/models/server_config/capabilities.rb +11 -0
- data/lib/project_types/extension/models/server_config/development_renderer.rb +6 -1
- data/lib/project_types/extension/models/server_config/extension.rb +10 -3
- data/lib/project_types/extension/models/server_config/root.rb +0 -2
- data/lib/project_types/extension/models/specification_handlers/checkout_ui_extension.rb +1 -1
- data/lib/project_types/extension/tasks/configure_features.rb +4 -0
- data/lib/project_types/extension/tasks/convert_server_config.rb +8 -4
- data/lib/project_types/extension/tasks/execute_commands/base.rb +2 -0
- data/lib/project_types/extension/tasks/execute_commands/build.rb +2 -1
- data/lib/project_types/extension/tasks/execute_commands/create.rb +0 -3
- data/lib/project_types/extension/tasks/execute_commands/outdated_extension_detection.rb +53 -0
- data/lib/project_types/extension/tasks/execute_commands/serve.rb +2 -1
- data/lib/project_types/extension/tasks/get_apps.rb +6 -9
- data/lib/project_types/extension/tasks/get_extensions.rb +12 -11
- data/lib/project_types/extension/tasks/merge_server_config.rb +4 -3
- data/lib/project_types/script/cli.rb +1 -0
- data/lib/project_types/script/config/extension_points.yml +17 -3
- data/lib/project_types/script/graphql/app_script_set.graphql +2 -0
- data/lib/project_types/script/layers/application/connect_app.rb +1 -1
- data/lib/project_types/script/layers/application/push_script.rb +1 -0
- data/lib/project_types/script/layers/domain/app_bridge.rb +16 -0
- data/lib/project_types/script/layers/domain/script_project.rb +1 -0
- data/lib/project_types/script/layers/infrastructure/errors.rb +0 -3
- data/lib/project_types/script/layers/infrastructure/languages/project_creator.rb +3 -2
- data/lib/project_types/script/layers/infrastructure/languages/task_runner.rb +2 -2
- data/lib/project_types/script/layers/infrastructure/script_project_repository.rb +12 -0
- data/lib/project_types/script/layers/infrastructure/script_service.rb +5 -0
- data/lib/project_types/theme/commands/serve.rb +27 -0
- data/lib/project_types/theme/messages/messages.rb +13 -0
- data/lib/shopify_cli/admin_api.rb +5 -2
- data/lib/shopify_cli/commands/login.rb +2 -2
- data/lib/shopify_cli/commands/logout.rb +1 -1
- data/lib/shopify_cli/constants.rb +2 -0
- data/lib/shopify_cli/context.rb +14 -9
- data/lib/shopify_cli/environment.rb +8 -0
- data/lib/shopify_cli/partners_api/app_extensions.rb +6 -6
- data/lib/shopify_cli/partners_api/organizations.rb +12 -4
- data/lib/shopify_cli/services/app/create/rails_service.rb +1 -1
- data/lib/shopify_cli/tasks/ensure_env.rb +1 -1
- data/lib/shopify_cli/theme/dev_server/hot_reload/sections_index.rb +5 -6
- data/lib/shopify_cli/theme/dev_server/local_assets.rb +1 -1
- data/lib/shopify_cli/theme/dev_server/watcher.rb +2 -1
- data/lib/shopify_cli/theme/dev_server.rb +1 -1
- data/lib/shopify_cli/theme/development_theme.rb +11 -1
- data/lib/shopify_cli/theme/file.rb +9 -0
- data/lib/shopify_cli/theme/theme.rb +4 -0
- data/lib/shopify_cli/theme/theme_admin_api.rb +3 -1
- data/lib/shopify_cli/version.rb +1 -1
- data/{shipit.yml → shipit.rubygems.yml} +0 -0
- data/shopify-cli.gemspec +1 -1
- metadata +9 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3acc31975c1b9d6478fe3f5d39ebf4ca0550b5956dc22dd4710103ae77bb0b4
|
4
|
+
data.tar.gz: 2cbf01bd46b9d3d175b6b4f534f28b52ce69972125169a243788d922a68bf19a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7999265576034095a1114c3a29a2ab9bbaee62bac8c29b26b79d2c724b8be1dbc045e0da7c94a1863e465545bd7be32851f2f36ae1b020a269346d4417c0008c
|
7
|
+
data.tar.gz: e5affc3532841d156305192ad2aa775065a9571a7bbf8ee6ab7b56d7f5d62c7a30407cf25e658bb99283d8429eb1b009ff406651fa7915c9e2a07508923be993
|
data/.github/CODEOWNERS
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
/lib/project_types/script/ @shopify/scripts-platform
|
5
5
|
/test/project_types/script/ @shopify/scripts-platform
|
6
6
|
|
7
|
-
/lib/project_types/theme/ @shopify/theme-
|
8
|
-
/lib/shopify_cli/theme/ @shopify/theme-
|
9
|
-
/test/project_types/theme/ @shopify/theme-
|
10
|
-
/test/shopify-cli/theme/ @shopify/theme-
|
7
|
+
/lib/project_types/theme/ @shopify/theme-developer-tools
|
8
|
+
/lib/shopify_cli/theme/ @shopify/theme-developer-tools
|
9
|
+
/test/project_types/theme/ @shopify/theme-developer-tools
|
10
|
+
/test/shopify-cli/theme/ @shopify/theme-developer-tools
|
@@ -44,39 +44,6 @@ jobs:
|
|
44
44
|
|
45
45
|
- name: Run Tests
|
46
46
|
run: bundle exec rake test
|
47
|
-
acceptance_tests:
|
48
|
-
name: Acceptance Tests
|
49
|
-
runs-on: ${{ matrix.os }}
|
50
|
-
strategy:
|
51
|
-
matrix:
|
52
|
-
version:
|
53
|
-
- 3.0.2
|
54
|
-
os:
|
55
|
-
- ubuntu-20.04
|
56
|
-
steps:
|
57
|
-
- uses: actions/checkout@v2
|
58
|
-
- name: Set Git configuration
|
59
|
-
run: |
|
60
|
-
git config --global user.email "development-lifecycle@shopify.com"
|
61
|
-
git config --global user.name "Development Lifecycle"
|
62
|
-
|
63
|
-
- name: Set up Ruby ${{ matrix.version }}
|
64
|
-
uses: ruby/setup-ruby@v1
|
65
|
-
with:
|
66
|
-
ruby-version: ${{ matrix.version }}
|
67
|
-
bundler-cache: true
|
68
|
-
|
69
|
-
- uses: actions/setup-node@v2
|
70
|
-
with:
|
71
|
-
node-version: "14.9.0"
|
72
|
-
|
73
|
-
- uses: docker-practice/actions-setup-docker@master
|
74
|
-
|
75
|
-
- name: Install Dependencies
|
76
|
-
run: bundle install
|
77
|
-
|
78
|
-
- name: Run Tests
|
79
|
-
run: bundle exec cucumber
|
80
47
|
rubocop:
|
81
48
|
name: Rubocop
|
82
49
|
runs-on: ${{ matrix.os }}
|
data/CHANGELOG.md
CHANGED
@@ -2,10 +2,44 @@ 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.17.0 - 2022-05-12
|
6
|
+
|
7
|
+
### Added
|
8
|
+
* [#2262](https://github.com/Shopify/shopify-cli/pull/2262): Add `capabilities` permissions to checkout extensions config
|
9
|
+
* [#2292](https://github.com/Shopify/shopify-cli/pull/2292): Add support for App Bridge create/details URLs for scripts
|
10
|
+
|
11
|
+
### Fixed
|
12
|
+
* [#2287](https://github.com/Shopify/shopify-cli/pull/2287): Fix `Encoding::UndefinedConversionError` on `theme serve` and `theme pull`
|
13
|
+
* [#2310](https://github.com/Shopify/shopify-cli/pull/2310): Fix live-reload to be resilient and no longer raise an error when a locale file is invalid
|
14
|
+
* [#2297](https://github.com/Shopify/shopify-cli/pull/2297): Only show update message when the new version is higher
|
15
|
+
* [#2270](https://github.com/Shopify/shopify-cli/pull/2270): Use ignore filter regex in watcher class
|
16
|
+
|
17
|
+
### Changed
|
18
|
+
* [#2299](https://github.com/Shopify/shopify-cli/pull/2299): Improve the unauthorized API errors when doing theme development
|
19
|
+
|
20
|
+
## Version 2.16.1 - 2022-04-26
|
21
|
+
|
22
|
+
### Fixed
|
23
|
+
* [#2279](https://github.com/Shopify/shopify-cli/pull/2279): Fix logout when there are theme permission issues
|
24
|
+
* [#2285](https://github.com/Shopify/shopify-cli/pull/2285): Fix extension loading for extension connect
|
25
|
+
* [#2284](https://github.com/Shopify/shopify-cli/pull/2284): Fix version check for Windows
|
26
|
+
|
27
|
+
## Version 2.16.0 - 2022-04-25
|
28
|
+
|
29
|
+
### Fixed
|
30
|
+
* [#2274](https://github.com/Shopify/shopify-cli/pull/2274): Fix broken `shopify extension register` and `shopify extension push`
|
31
|
+
|
32
|
+
### Added
|
33
|
+
* [#2189](https://github.com/Shopify/shopify-cli/pull/2189): Retrieve latest CLI version in the background
|
34
|
+
* [#2263](https://github.com/Shopify/shopify-cli/pull/2263): Add `POS UI Extension` to support third party developers to extend POS smart grid functionality using native retail components.
|
35
|
+
|
36
|
+
### Changed
|
37
|
+
* [#2272](https://github.com/Shopify/shopify-cli/pull/2272): Changed interactive apps list scope for extension create|register|connect commands
|
38
|
+
|
5
39
|
## Version 2.15.6 - 2022-04-12
|
6
40
|
|
7
41
|
### Fixed
|
8
|
-
* [#2246](https://github.com/Shopify/shopify-cli/pull/2246): Fix callback urls for app serve
|
42
|
+
* [#2246](https://github.com/Shopify/shopify-cli/pull/2246): Fix callback urls for app serve
|
9
43
|
|
10
44
|
## Version 2.15.5 - 2022-04-08
|
11
45
|
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
shopify-cli (2.
|
4
|
+
shopify-cli (2.17.0)
|
5
5
|
bugsnag (~> 6.22)
|
6
6
|
listen (~> 3.7.0)
|
7
7
|
theme-check (~> 1.10.1)
|
@@ -101,7 +101,7 @@ GEM
|
|
101
101
|
mocha (1.13.0)
|
102
102
|
multi_test (0.1.2)
|
103
103
|
multipart-post (2.1.1)
|
104
|
-
nokogiri (1.13.
|
104
|
+
nokogiri (1.13.4)
|
105
105
|
mini_portile2 (~> 2.8.0)
|
106
106
|
racc (~> 1.4)
|
107
107
|
octokit (4.22.0)
|
@@ -165,7 +165,7 @@ PLATFORMS
|
|
165
165
|
ruby
|
166
166
|
|
167
167
|
DEPENDENCIES
|
168
|
-
bundler (~> 2.3.
|
168
|
+
bundler (~> 2.3.11)
|
169
169
|
byebug
|
170
170
|
colorize (~> 0.8.1)
|
171
171
|
cucumber (~> 7.0)
|
@@ -187,4 +187,4 @@ DEPENDENCIES
|
|
187
187
|
webmock
|
188
188
|
|
189
189
|
BUNDLED WITH
|
190
|
-
2.3.
|
190
|
+
2.3.11
|
data/Tests.dockerfile
CHANGED
@@ -1 +1 @@
|
|
1
|
-
v0.
|
1
|
+
v0.4.0
|
@@ -63,6 +63,8 @@ module Extension
|
|
63
63
|
autoload :Build, Project.project_filepath("tasks/execute_commands/build")
|
64
64
|
autoload :Create, Project.project_filepath("tasks/execute_commands/create")
|
65
65
|
autoload :Serve, Project.project_filepath("tasks/execute_commands/serve")
|
66
|
+
autoload :OutdatedExtensionDetection,
|
67
|
+
Project.project_filepath("tasks/execute_commands/outdated_extension_detection")
|
66
68
|
|
67
69
|
class << self
|
68
70
|
def build(*args)
|
@@ -120,6 +122,7 @@ module Extension
|
|
120
122
|
module ServerConfig
|
121
123
|
autoload :Base, Project.project_filepath("models/server_config/base")
|
122
124
|
autoload :App, Project.project_filepath("models/server_config/app")
|
125
|
+
autoload :Capabilities, Project.project_filepath("models/server_config/capabilities")
|
123
126
|
autoload :Development, Project.project_filepath("models/server_config/development")
|
124
127
|
autoload :DevelopmentEntries, Project.project_filepath("models/server_config/development_entries")
|
125
128
|
autoload :DevelopmentRenderer, Project.project_filepath("models/server_config/development_renderer")
|
@@ -59,7 +59,13 @@ module Extension
|
|
59
59
|
root_dir: form.directory_name,
|
60
60
|
template: form.template,
|
61
61
|
type: form.type.identifier.downcase,
|
62
|
+
context: @ctx,
|
62
63
|
)
|
64
|
+
.then { |output| @ctx.puts(output) }
|
65
|
+
.unwrap do |error|
|
66
|
+
raise ShopifyCLI::Abort, error.message unless error.nil?
|
67
|
+
end
|
68
|
+
|
63
69
|
@ctx.chdir(form.directory_name)
|
64
70
|
write_env_file(form)
|
65
71
|
rescue => error
|
@@ -14,6 +14,9 @@ module Extension
|
|
14
14
|
parser.on("--resourceUrl=RESOURCE_URL", "Provide a resource URL") do |resource_url|
|
15
15
|
flags[:resource_url] = resource_url
|
16
16
|
end
|
17
|
+
parser.on("-p", "--port=PORT", "Specify the port to use") do |port|
|
18
|
+
flags[:port] = port.to_i
|
19
|
+
end
|
17
20
|
end
|
18
21
|
|
19
22
|
class RuntimeConfiguration
|
@@ -22,13 +25,14 @@ module Extension
|
|
22
25
|
property :tunnel_url, accepts: String, default: nil
|
23
26
|
property :resource_url, accepts: String, default: nil
|
24
27
|
property! :tunnel_requested, accepts: [true, false], reader: :tunnel_requested?, default: true
|
25
|
-
property
|
28
|
+
property :port, accepts: (1...(2**16))
|
26
29
|
end
|
27
30
|
|
28
31
|
def call(_args, _command_name)
|
29
32
|
config = RuntimeConfiguration.new(
|
30
33
|
tunnel_requested: tunnel_requested?,
|
31
|
-
resource_url: options.flags[:resource_url]
|
34
|
+
resource_url: options.flags[:resource_url],
|
35
|
+
port: options.flags[:port]
|
32
36
|
)
|
33
37
|
|
34
38
|
ShopifyCLI::Result
|
@@ -51,10 +55,11 @@ module Extension
|
|
51
55
|
end
|
52
56
|
|
53
57
|
def find_available_port(runtime_configuration)
|
58
|
+
return runtime_configuration unless runtime_configuration.port.nil?
|
54
59
|
return runtime_configuration unless specification_handler.choose_port?(@ctx)
|
55
60
|
|
56
61
|
chosen_port = Tasks::ChooseNextAvailablePort
|
57
|
-
.call(from:
|
62
|
+
.call(from: DEFAULT_PORT)
|
58
63
|
.unwrap { |_error| @ctx.abort(@ctx.message("serve.no_available_ports_found")) }
|
59
64
|
runtime_configuration.tap { |c| c.port = chosen_port }
|
60
65
|
end
|
@@ -24,11 +24,6 @@ module Extension
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def config(context, include_renderer_version: true)
|
27
|
-
js_system = ShopifyCLI::JsSystem.new(ctx: context)
|
28
|
-
if js_system.package_manager == "yarn"
|
29
|
-
run_yarn_install(context, js_system)
|
30
|
-
run_yarn_run_script(context, js_system)
|
31
|
-
end
|
32
27
|
filepath = File.join(context.root, SCRIPT_PATH)
|
33
28
|
context.abort(context.message("features.argo.missing_file_error")) unless File.exist?(filepath)
|
34
29
|
|
@@ -50,32 +45,6 @@ module Extension
|
|
50
45
|
def renderer_package(context)
|
51
46
|
Tasks::FindPackageFromJson.call(renderer_package_name, context: context)
|
52
47
|
end
|
53
|
-
|
54
|
-
private
|
55
|
-
|
56
|
-
def run_yarn_install(context, js_system)
|
57
|
-
_result, error, status = js_system.call(
|
58
|
-
yarn: YARN_INSTALL_COMMAND + YARN_INSTALL_PARAMETERS,
|
59
|
-
npm: [],
|
60
|
-
capture_response: true
|
61
|
-
)
|
62
|
-
|
63
|
-
context.abort(
|
64
|
-
context.message("features.argo.dependencies.yarn_install_error", error)
|
65
|
-
) unless status.success?
|
66
|
-
end
|
67
|
-
|
68
|
-
def run_yarn_run_script(context, js_system)
|
69
|
-
_result, error, status = js_system.call(
|
70
|
-
yarn: YARN_RUN_COMMAND + YARN_RUN_SCRIPT_NAME,
|
71
|
-
npm: [],
|
72
|
-
capture_response: true
|
73
|
-
)
|
74
|
-
|
75
|
-
context.abort(
|
76
|
-
context.message("features.argo.dependencies.yarn_run_script_error", error)
|
77
|
-
) unless status.success?
|
78
|
-
end
|
79
48
|
end
|
80
49
|
end
|
81
50
|
end
|
@@ -9,7 +9,7 @@ module Extension
|
|
9
9
|
property! :specification_handler, accepts: Extension::Models::SpecificationHandlers::Default
|
10
10
|
property :argo_runtime, accepts: -> (runtime) { runtime.class < Features::Runtimes::Base }
|
11
11
|
property! :context, accepts: ShopifyCLI::Context
|
12
|
-
property! :port, accepts: Integer
|
12
|
+
property! :port, accepts: Integer
|
13
13
|
property :tunnel_url, accepts: String, default: nil
|
14
14
|
property! :js_system, accepts: ->(jss) { jss.respond_to?(:call) }, default: ShopifyCLI::JsSystem
|
15
15
|
property :resource_url, accepts: String, default: nil
|
@@ -194,6 +194,29 @@ module Extension
|
|
194
194
|
"{{command:%1$s extension connect}} " \
|
195
195
|
"or run {{command:%1$s extension register}} to register a new extension.",
|
196
196
|
module_not_found: "Unable to find module %s. Ensure your dependencies are up-to-date and try again.",
|
197
|
+
development_server_binary_not_found: {
|
198
|
+
title: "Development Server Binary Missing",
|
199
|
+
message: <<~ERROR,
|
200
|
+
The extension development server binary could not be found!
|
201
|
+
|
202
|
+
If you're running a development version of the CLI, please run `rake extensions:install` to install it.
|
203
|
+
Otherwise, please file a bug report via https://github.com/Shopify/shopify-cli/issues/new.
|
204
|
+
ERROR
|
205
|
+
},
|
206
|
+
outdated_extensions: {
|
207
|
+
unknown: <<~TEXT.strip,
|
208
|
+
Please refer to the documentation for more information on how to upgrade your extension:
|
209
|
+
https://shopify.dev/apps/app-extensions
|
210
|
+
TEXT
|
211
|
+
checkout_ui_extension: <<~TEXT.strip,
|
212
|
+
Please update your package.json as follows:
|
213
|
+
* Replace the development dependency @shopify/checkout-ui-extensions-run
|
214
|
+
with @shopify/shopify-cli-extensions
|
215
|
+
* Remove the start and server script
|
216
|
+
* Add a develop script: shopify-cli-extensions develop
|
217
|
+
* Change the build script to: shopify-cli-extensions build
|
218
|
+
TEXT
|
219
|
+
},
|
197
220
|
},
|
198
221
|
warnings: {
|
199
222
|
resource_url_auto_generation_failed: "{{*}} {{yellow:Warning:}} Unable to auto generate " \
|
@@ -27,7 +27,8 @@ module Extension
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def create(server_config)
|
30
|
-
CLI::Kit::System.
|
30
|
+
output, _ = CLI::Kit::System.capture2e(executable, "create", "-", stdin_data: server_config.to_yaml)
|
31
|
+
output
|
31
32
|
rescue StandardError => error
|
32
33
|
raise error
|
33
34
|
end
|
@@ -10,11 +10,17 @@ module Extension
|
|
10
10
|
"checkout_post_purchase",
|
11
11
|
"product_subscription",
|
12
12
|
"beacon_extension",
|
13
|
+
"pos_ui_extension",
|
13
14
|
]
|
14
15
|
|
15
16
|
class << self
|
16
17
|
def supported?(type)
|
17
|
-
|
18
|
+
if type_supported?(type) && type_enabled?(type)
|
19
|
+
return true if binary_installed?
|
20
|
+
warn_about_missing_binary
|
21
|
+
end
|
22
|
+
|
23
|
+
false
|
18
24
|
end
|
19
25
|
|
20
26
|
def beta_enabled?
|
@@ -25,15 +31,29 @@ module Extension
|
|
25
31
|
SUPPORTED_EXTENSION_TYPES.include?(type.downcase)
|
26
32
|
end
|
27
33
|
|
34
|
+
# Some types are enabled unconditionally; others require beta_enabled
|
35
|
+
def type_enabled?(type)
|
36
|
+
beta_enabled? || "checkout_ui_extension" == type.downcase
|
37
|
+
end
|
38
|
+
|
28
39
|
private
|
29
40
|
|
30
41
|
def binary_installed?
|
31
42
|
Models::DevelopmentServer.new.executable_installed?
|
32
43
|
end
|
33
44
|
|
34
|
-
|
35
|
-
|
36
|
-
|
45
|
+
def warn_about_missing_binary
|
46
|
+
CLI::UI::Frame.open(message("errors.development_server_binary_not_found.title"), color: :yellow) do
|
47
|
+
context.puts(message("errors.development_server_binary_not_found.message"))
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def message(key)
|
52
|
+
context.message(key)
|
53
|
+
end
|
54
|
+
|
55
|
+
def context
|
56
|
+
@context ||= ShopifyCLI::Context.new
|
37
57
|
end
|
38
58
|
end
|
39
59
|
end
|
@@ -8,9 +8,9 @@ module Extension
|
|
8
8
|
|
9
9
|
property :name
|
10
10
|
property :version
|
11
|
-
property :scripts, accepts: Hash
|
12
|
-
property :dependencies, accepts: Hash
|
13
|
-
property :dev_dependencies, accepts: Hash
|
11
|
+
property :scripts, accepts: Hash, default: -> { {} }
|
12
|
+
property :dependencies, accepts: Hash, default: -> { {} }
|
13
|
+
property :dev_dependencies, accepts: Hash, default: -> { {} }
|
14
14
|
|
15
15
|
def initialize(**config)
|
16
16
|
super(**config.select { |property_name, _| self.class.properties.key?(property_name) })
|
@@ -27,6 +27,18 @@ module Extension
|
|
27
27
|
return nil unless name == other.name
|
28
28
|
Semantic::Version.new(version) <=> Semantic::Version.new(other.version)
|
29
29
|
end
|
30
|
+
|
31
|
+
def script?(name)
|
32
|
+
scripts.key?(name)
|
33
|
+
end
|
34
|
+
|
35
|
+
def dependency?(name)
|
36
|
+
dependencies.key?(name)
|
37
|
+
end
|
38
|
+
|
39
|
+
def dev_dependency?(name)
|
40
|
+
dev_dependencies.key?(name)
|
41
|
+
end
|
30
42
|
end
|
31
43
|
end
|
32
44
|
end
|
@@ -10,6 +10,7 @@ module Extension
|
|
10
10
|
"@shopify/admin-ui-extensions",
|
11
11
|
"@shopify/post-purchase-ui-extensions",
|
12
12
|
"@shopify/checkout-ui-extensions",
|
13
|
+
"@shopify/retail-ui-extensions",
|
13
14
|
]
|
14
15
|
|
15
16
|
property! :name, accepts: VALID_RENDERERS
|
@@ -20,9 +21,13 @@ module Extension
|
|
20
21
|
when "product_subscription"
|
21
22
|
new(name: "@shopify/admin-ui-extensions", version: "^1.0.1")
|
22
23
|
when "checkout_ui_extension"
|
23
|
-
new(name: "@shopify/checkout-ui-extensions", version: "^0.
|
24
|
+
new(name: "@shopify/checkout-ui-extensions", version: "^0.15.0")
|
24
25
|
when "checkout_post_purchase"
|
25
26
|
new(name: "@shopify/post-purchase-ui-extensions", version: "^0.13.2")
|
27
|
+
when "pos_ui_extension"
|
28
|
+
new(name: "@shopify/retail-ui-extensions", version: "^0.1.0")
|
29
|
+
else
|
30
|
+
raise ArgumentError, "Unknown extension type: #{type}"
|
26
31
|
end
|
27
32
|
end
|
28
33
|
end
|
@@ -10,11 +10,14 @@ module Extension
|
|
10
10
|
property! :type, accepts: String
|
11
11
|
property! :user, accepts: ServerConfig::User
|
12
12
|
property! :development, accepts: ServerConfig::Development
|
13
|
+
property :capabilities, accepts: ServerConfig::Capabilities
|
13
14
|
property :extension_points, accepts: Array
|
14
|
-
property :version, accepts: String
|
15
15
|
property :title, accepts: String
|
16
|
+
property :description, accepts: String
|
17
|
+
property :version, accepts: String
|
18
|
+
property :metafields, accepts: Array
|
16
19
|
|
17
|
-
def self.build(uuid: "", template:, type:, root_dir
|
20
|
+
def self.build(uuid: "", template:, type:, root_dir:, **args)
|
18
21
|
renderer = ServerConfig::DevelopmentRenderer.find(type)
|
19
22
|
entry = ServerConfig::DevelopmentEntries.find(template)
|
20
23
|
new(
|
@@ -26,7 +29,11 @@ module Extension
|
|
26
29
|
template: template,
|
27
30
|
renderer: renderer,
|
28
31
|
entries: entry
|
29
|
-
)
|
32
|
+
),
|
33
|
+
capabilities: ServerConfig::Capabilities.new(
|
34
|
+
network_access: false
|
35
|
+
),
|
36
|
+
metafields: args.delete(:metafields)
|
30
37
|
)
|
31
38
|
end
|
32
39
|
|
@@ -15,7 +15,7 @@ module Extension
|
|
15
15
|
(?<region>[a-zA-Z]{2}) # Optional region subtag
|
16
16
|
)?
|
17
17
|
\z}x
|
18
|
-
PERMITTED_CONFIG_KEYS = [:extension_points, :metafields, :name]
|
18
|
+
PERMITTED_CONFIG_KEYS = [:extension_points, :metafields, :name, :capabilities]
|
19
19
|
|
20
20
|
def config(context)
|
21
21
|
{
|
@@ -9,13 +9,14 @@ module Extension
|
|
9
9
|
property! :api_key, accepts: String
|
10
10
|
property! :context, accepts: ShopifyCLI::Context
|
11
11
|
property! :hash, accepts: Hash
|
12
|
-
property
|
12
|
+
property! :port, accepts: Integer
|
13
13
|
property! :registration_uuid, accepts: String
|
14
14
|
property :resource_url, accepts: String
|
15
15
|
property! :store, accepts: String
|
16
16
|
property! :title, accepts: String
|
17
17
|
property :tunnel_url, accepts: String
|
18
18
|
property! :type, accepts: String
|
19
|
+
property :metafields, accepts: Array
|
19
20
|
|
20
21
|
DEFAULT_BUILD_DIR = "build"
|
21
22
|
|
@@ -27,7 +28,6 @@ module Extension
|
|
27
28
|
context.abort(context.message("tasks.errors.parse_error")) if hash.nil?
|
28
29
|
|
29
30
|
renderer = Models::ServerConfig::DevelopmentRenderer.find(type)
|
30
|
-
|
31
31
|
extension = Models::ServerConfig::Extension.new(
|
32
32
|
uuid: registration_uuid,
|
33
33
|
type: type.upcase,
|
@@ -40,8 +40,12 @@ module Extension
|
|
40
40
|
)
|
41
41
|
),
|
42
42
|
extension_points: hash.dig("extension_points"),
|
43
|
-
|
44
|
-
|
43
|
+
capabilities: Models::ServerConfig::Capabilities.new(
|
44
|
+
network_access: hash.dig("capabilities", "network_access") || false
|
45
|
+
),
|
46
|
+
version: renderer ? version(renderer.name, context) : nil,
|
47
|
+
title: title,
|
48
|
+
metafields: metafields
|
45
49
|
)
|
46
50
|
|
47
51
|
unless resource_url.nil?
|