shopify-cli 1.8.0 → 1.9.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.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +15 -2
- data/CHANGELOG.md +4 -1
- data/Gemfile.lock +3 -3
- data/dev.yml +3 -0
- data/lib/graphql/extension_create.graphql +17 -2
- data/lib/project_types/extension/cli.rb +2 -0
- data/lib/project_types/extension/commands/extension_command.rb +4 -4
- data/lib/project_types/extension/commands/push.rb +2 -2
- data/lib/project_types/extension/commands/register.rb +4 -3
- data/lib/project_types/extension/commands/serve.rb +1 -35
- data/lib/project_types/extension/extension_project.rb +15 -4
- data/lib/project_types/extension/extension_project_keys.rb +2 -1
- data/lib/project_types/extension/features/argo.rb +6 -0
- data/lib/project_types/extension/features/argo_renderer_package.rb +32 -0
- data/lib/project_types/extension/features/argo_serve.rb +69 -0
- data/lib/project_types/extension/messages/message_loading.rb +3 -1
- data/lib/project_types/extension/models/registration.rb +1 -0
- data/lib/project_types/extension/models/specification.rb +2 -0
- data/lib/project_types/extension/models/specification_handlers/default.rb +8 -0
- data/lib/project_types/extension/tasks/configure_features.rb +2 -0
- data/lib/project_types/extension/tasks/converters/registration_converter.rb +2 -0
- data/lib/project_types/node/commands/generate.rb +0 -22
- data/lib/project_types/script/cli.rb +2 -8
- data/lib/project_types/script/commands/create.rb +0 -7
- data/lib/project_types/script/commands/push.rb +2 -2
- data/lib/project_types/script/config/extension_points.yml +2 -0
- data/lib/project_types/script/errors.rb +0 -19
- data/lib/project_types/script/forms/create.rb +3 -14
- data/lib/project_types/script/graphql/app_script_update_or_create.graphql +0 -3
- data/lib/project_types/script/graphql/script_service_proxy.graphql +1 -2
- data/lib/project_types/script/layers/application/build_script.rb +1 -2
- data/lib/project_types/script/layers/application/create_script.rb +30 -51
- data/lib/project_types/script/layers/application/extension_points.rb +3 -2
- data/lib/project_types/script/layers/application/push_script.rb +2 -4
- data/lib/project_types/script/layers/domain/extension_point.rb +56 -46
- data/lib/project_types/script/layers/domain/metadata.rb +18 -25
- data/lib/project_types/script/layers/domain/push_package.rb +0 -4
- data/lib/project_types/script/layers/domain/script_project.rb +34 -0
- data/lib/project_types/script/layers/infrastructure/assemblyscript_project_creator.rb +6 -2
- data/lib/project_types/script/layers/infrastructure/assemblyscript_task_runner.rb +4 -4
- data/lib/project_types/script/layers/infrastructure/errors.rb +12 -10
- data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +10 -12
- data/lib/project_types/script/layers/infrastructure/rust_task_runner.rb +1 -1
- data/lib/project_types/script/layers/infrastructure/script_project_repository.rb +145 -0
- data/lib/project_types/script/layers/infrastructure/script_service.rb +9 -72
- data/lib/project_types/script/messages/messages.rb +0 -47
- data/lib/project_types/script/ui/error_handler.rb +7 -24
- data/lib/shopify-cli/context.rb +28 -0
- data/lib/shopify-cli/version.rb +1 -1
- metadata +6 -10
- data/lib/project_types/script/commands/disable.rb +0 -25
- data/lib/project_types/script/commands/enable.rb +0 -80
- data/lib/project_types/script/graphql/shop_script_delete.graphql +0 -14
- data/lib/project_types/script/graphql/shop_script_update_or_create.graphql +0 -28
- data/lib/project_types/script/layers/application/disable_script.rb +0 -21
- data/lib/project_types/script/layers/application/enable_script.rb +0 -23
- data/lib/project_types/script/layers/infrastructure/config_ui_repository.rb +0 -46
- data/lib/project_types/script/script_project.rb +0 -64
@@ -15,7 +15,6 @@ module Script
|
|
15
15
|
script_name:,
|
16
16
|
script_content:,
|
17
17
|
compiled_type:,
|
18
|
-
description: nil,
|
19
18
|
api_key: nil,
|
20
19
|
force: false,
|
21
20
|
metadata:,
|
@@ -25,7 +24,6 @@ module Script
|
|
25
24
|
variables = {
|
26
25
|
extensionPointName: extension_point_type.upcase,
|
27
26
|
title: script_name,
|
28
|
-
description: description,
|
29
27
|
configUi: config_ui&.content,
|
30
28
|
sourceCode: Base64.encode64(script_content),
|
31
29
|
language: compiled_type,
|
@@ -47,94 +45,33 @@ module Script
|
|
47
45
|
raise Errors::ConfigUiMissingKeysError.new(config_ui&.filename, e["message"])
|
48
46
|
elsif (e = user_errors.find { |err| err["tag"] == "config_ui_fields_missing_keys_error" })
|
49
47
|
raise Errors::ConfigUiFieldsMissingKeysError.new(config_ui&.filename, e["message"])
|
48
|
+
elsif user_errors.find { |err| %w(not_use_msgpack_error schema_version_argument_error).include?(err["tag"]) }
|
49
|
+
raise Domain::Errors::MetadataValidationError
|
50
50
|
else
|
51
|
-
raise Errors::
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def enable(api_key:, shop_domain:, configuration:, extension_point_type:, title:)
|
56
|
-
query_name = "shop_script_update_or_create"
|
57
|
-
variables = {
|
58
|
-
extensionPointName: extension_point_type.upcase,
|
59
|
-
configuration: configuration,
|
60
|
-
title: title,
|
61
|
-
}
|
62
|
-
|
63
|
-
resp_hash = script_service_request(
|
64
|
-
query_name: query_name,
|
65
|
-
api_key: api_key,
|
66
|
-
shop_domain: format_shop_domain(shop_domain),
|
67
|
-
variables: variables,
|
68
|
-
)
|
69
|
-
user_errors = resp_hash["data"]["shopScriptUpdateOrCreate"]["userErrors"]
|
70
|
-
|
71
|
-
return resp_hash if user_errors.empty?
|
72
|
-
|
73
|
-
if user_errors.any? { |e| e["tag"] == "app_script_not_found" }
|
74
|
-
raise Errors::AppScriptUndefinedError, api_key
|
75
|
-
elsif user_errors.any? { |e| e["tag"] == "shop_script_conflict" }
|
76
|
-
raise Errors::ShopScriptConflictError
|
77
|
-
elsif user_errors.any? { |e| e["tag"] == "app_script_not_pushed" }
|
78
|
-
raise Errors::AppScriptNotPushedError
|
79
|
-
else
|
80
|
-
raise Errors::ScriptServiceUserError.new(query_name, user_errors.to_s)
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
def disable(api_key:, shop_domain:, extension_point_type:)
|
85
|
-
query_name = "shop_script_delete"
|
86
|
-
variables = {
|
87
|
-
extensionPointName: extension_point_type.upcase,
|
88
|
-
}
|
89
|
-
|
90
|
-
resp_hash = script_service_request(
|
91
|
-
query_name: query_name,
|
92
|
-
api_key: api_key,
|
93
|
-
shop_domain: format_shop_domain(shop_domain),
|
94
|
-
variables: variables,
|
95
|
-
)
|
96
|
-
user_errors = resp_hash["data"]["shopScriptDelete"]["userErrors"]
|
97
|
-
return resp_hash if user_errors.empty?
|
98
|
-
|
99
|
-
if user_errors.any? { |e| e["tag"] == "shop_script_not_found" }
|
100
|
-
raise Errors::ShopScriptUndefinedError, api_key
|
101
|
-
else
|
102
|
-
raise Errors::ScriptServiceUserError.new(query_name, user_errors.to_s)
|
51
|
+
raise Errors::GraphqlError, user_errors
|
103
52
|
end
|
104
53
|
end
|
105
54
|
|
106
55
|
private
|
107
56
|
|
108
|
-
def format_shop_domain(shop_domain)
|
109
|
-
shop_domain.delete_suffix("/")
|
110
|
-
end
|
111
|
-
|
112
57
|
class ScriptServiceAPI < ShopifyCli::API
|
113
58
|
property(:api_key, accepts: String)
|
114
|
-
property(:shop_id, accepts: Integer)
|
115
59
|
|
116
|
-
def self.query(ctx, query_name, api_key: nil,
|
117
|
-
api_client(ctx, api_key
|
60
|
+
def self.query(ctx, query_name, api_key: nil, variables: {})
|
61
|
+
api_client(ctx, api_key).query(query_name, variables: variables)
|
118
62
|
end
|
119
63
|
|
120
|
-
def self.api_client(ctx, api_key
|
64
|
+
def self.api_client(ctx, api_key)
|
121
65
|
new(
|
122
66
|
ctx: ctx,
|
123
67
|
url: "https://script-service.myshopify.io/graphql",
|
124
68
|
token: "",
|
125
|
-
api_key: api_key
|
126
|
-
shop_id: infer_shop_id(shop_domain)
|
69
|
+
api_key: api_key
|
127
70
|
)
|
128
71
|
end
|
129
72
|
|
130
|
-
def self.infer_shop_id(shop_domain)
|
131
|
-
return unless shop_domain
|
132
|
-
|
133
|
-
[shop_domain.to_i, 1].max
|
134
|
-
end
|
135
|
-
|
136
73
|
def auth_headers(*)
|
137
|
-
tokens = { "APP_KEY" => api_key
|
74
|
+
tokens = { "APP_KEY" => api_key }.compact.to_json
|
138
75
|
{ "X-Shopify-Authenticated-Tokens" => tokens }
|
139
76
|
end
|
140
77
|
end
|
@@ -177,7 +114,7 @@ module Script
|
|
177
114
|
when "app_not_installed_on_shop"
|
178
115
|
raise Errors::AppNotInstalledError
|
179
116
|
else
|
180
|
-
raise Errors::GraphqlError, response["errors"]
|
117
|
+
raise Errors::GraphqlError, response["errors"]
|
181
118
|
end
|
182
119
|
end
|
183
120
|
|
@@ -73,9 +73,6 @@ module Script
|
|
73
73
|
service_failure_cause: "Internal service error.",
|
74
74
|
service_failure_help: "Ensure the 'shopify/scripts-toolchain-as' package is up to date.",
|
75
75
|
|
76
|
-
user_error_cause: "Invalid script extension metadata.",
|
77
|
-
user_error_help: "Ensure the 'shopify/scripts-toolchain-as' package is up to date.",
|
78
|
-
|
79
76
|
metadata_validation_cause: "Invalid script extension metadata.",
|
80
77
|
metadata_validation_help: "Ensure the 'shopify/scripts-toolchain-as' package is up to date.",
|
81
78
|
|
@@ -94,8 +91,6 @@ module Script
|
|
94
91
|
"'--metadata build/metadata.json' argument",
|
95
92
|
app_not_installed_cause: "App not installed on store.",
|
96
93
|
|
97
|
-
app_script_not_pushed_help: "Script isn't on the app. Run {{command:shopify push}}, and then try again.",
|
98
|
-
|
99
94
|
build_error_cause: "Something went wrong while building the script.",
|
100
95
|
build_error_help: "Correct the errors and try again.",
|
101
96
|
|
@@ -116,12 +111,6 @@ module Script
|
|
116
111
|
shop_auth_cause: "Unable to authenticate with the store.",
|
117
112
|
shop_auth_help: "Try again.",
|
118
113
|
|
119
|
-
shop_script_conflict_cause: "Another app in this store has already enabled a script "\
|
120
|
-
"on this extension point.",
|
121
|
-
shop_script_conflict_help: "Disable that script or uninstall that app and try again.",
|
122
|
-
|
123
|
-
shop_script_undefined_cause: "Script is already turned off in store.",
|
124
|
-
|
125
114
|
invalid_build_script: "The root package.json contains an invalid build command that " \
|
126
115
|
"is needed to compile your script to WebAssembly.",
|
127
116
|
build_script_not_found: "The root package.json is missing the build command that " \
|
@@ -142,7 +131,6 @@ module Script
|
|
142
131
|
Usage: {{command:%1$s create script}}
|
143
132
|
Options:
|
144
133
|
{{command:--name=NAME}} Script project name. Use any string.
|
145
|
-
{{command:--description=DESCRIPTION}} Description of the project. Use any string.
|
146
134
|
{{command:--extension-point=TYPE}} Extension point name. Allowed values: %2$s.
|
147
135
|
{{command:--no-config-ui}} Specify this option if you don’t want Scripts to render an interface in the Shopify admin.
|
148
136
|
HELP
|
@@ -171,40 +159,6 @@ module Script
|
|
171
159
|
script_pushed: "{{v}} Script pushed to app (API key: %{api_key}).",
|
172
160
|
},
|
173
161
|
|
174
|
-
disable: {
|
175
|
-
help: <<~HELP,
|
176
|
-
Turn off script in store.
|
177
|
-
Usage: {{command:%s disable}}
|
178
|
-
HELP
|
179
|
-
|
180
|
-
error: {
|
181
|
-
operation_failed: "Can't disable script.",
|
182
|
-
},
|
183
|
-
|
184
|
-
script_disabled: "{{v}} Script disabled. Script is turned off in store.",
|
185
|
-
},
|
186
|
-
|
187
|
-
enable: {
|
188
|
-
help: <<~HELP,
|
189
|
-
Turn on script in store.
|
190
|
-
Usage: {{command:%s enable}}
|
191
|
-
Options:
|
192
|
-
{{command:--config-props='name1:value1, name2:value2'}} Optional. Define the configuration of your script by passing individual name and value pairs. If used with --config_file, then matching values in --config-props will override those set in the file.
|
193
|
-
{{command:--config_file=<path/to/YAMLFilename>}} Optional. Define the configuration of your script using a YAML formatted file. --config-props values override properties in this file.
|
194
|
-
HELP
|
195
|
-
|
196
|
-
info: "{{*}} A script always remains enabled until you disable it - even after pushing "\
|
197
|
-
"script changes with the same extension point to an app. To disable a script, use "\
|
198
|
-
"the 'disable' command.",
|
199
|
-
|
200
|
-
error: {
|
201
|
-
operation_failed: "Can't enable script.",
|
202
|
-
},
|
203
|
-
|
204
|
-
script_enabled: "{{v}} Script enabled. %{type} script %{title} in app (API key: %{api_key}) "\
|
205
|
-
"is turned on in store {{green:%{shop_domain}}}",
|
206
|
-
},
|
207
|
-
|
208
162
|
project_deps: {
|
209
163
|
none_required: "{{v}} None required",
|
210
164
|
checking_with_npm: "Checking dependencies with npm",
|
@@ -217,7 +171,6 @@ module Script
|
|
217
171
|
select_extension_point: "Which extension point do you want to use?",
|
218
172
|
select_language: "Which language do you want to use?",
|
219
173
|
script_name: "Script Name",
|
220
|
-
description: "Description",
|
221
174
|
},
|
222
175
|
},
|
223
176
|
|
@@ -39,7 +39,7 @@ module Script
|
|
39
39
|
cause_of_error: ShopifyCli::Context.message("script.error.oauth_cause"),
|
40
40
|
help_suggestion: ShopifyCli::Context.message("script.error.oauth_help"),
|
41
41
|
}
|
42
|
-
when Errors::InvalidContextError
|
42
|
+
when Layers::Infrastructure::Errors::InvalidContextError
|
43
43
|
{
|
44
44
|
cause_of_error: ShopifyCli::Context.message("script.error.invalid_context_cause"),
|
45
45
|
help_suggestion: ShopifyCli::Context.message("script.error.invalid_context_help"),
|
@@ -53,7 +53,7 @@ module Script
|
|
53
53
|
{
|
54
54
|
cause_of_error: ShopifyCli::Context.message("script.error.invalid_config", e.config_file),
|
55
55
|
}
|
56
|
-
when Errors::InvalidLanguageError
|
56
|
+
when Layers::Infrastructure::Errors::InvalidLanguageError
|
57
57
|
{
|
58
58
|
cause_of_error: ShopifyCli::Context.message("script.error.invalid_language_cause", e.language),
|
59
59
|
help_suggestion: ShopifyCli::Context.message(
|
@@ -84,12 +84,12 @@ module Script
|
|
84
84
|
organization_id: e.organization_id
|
85
85
|
),
|
86
86
|
}
|
87
|
-
when Errors::ScriptProjectAlreadyExistsError
|
87
|
+
when Layers::Infrastructure::Errors::ScriptProjectAlreadyExistsError
|
88
88
|
{
|
89
89
|
cause_of_error: ShopifyCli::Context.message("script.error.project_exists_cause"),
|
90
90
|
help_suggestion: ShopifyCli::Context.message("script.error.project_exists_help"),
|
91
91
|
}
|
92
|
-
when Errors::DeprecatedEPError
|
92
|
+
when Layers::Infrastructure::Errors::DeprecatedEPError
|
93
93
|
{
|
94
94
|
cause_of_error: ShopifyCli::Context.message("script.error.deprecated_ep", e.ep),
|
95
95
|
help_suggestion: ShopifyCli::Context.message("script.error.deprecated_ep_cause"),
|
@@ -141,11 +141,6 @@ module Script
|
|
141
141
|
{
|
142
142
|
cause_of_error: ShopifyCli::Context.message("script.error.app_not_installed_cause"),
|
143
143
|
}
|
144
|
-
when Layers::Infrastructure::Errors::AppScriptNotPushedError,
|
145
|
-
Layers::Infrastructure::Errors::AppScriptUndefinedError
|
146
|
-
{
|
147
|
-
cause_of_error: ShopifyCli::Context.message("script.error.app_script_not_pushed_help"),
|
148
|
-
}
|
149
144
|
when Layers::Infrastructure::Errors::BuildError
|
150
145
|
{
|
151
146
|
cause_of_error: ShopifyCli::Context.message("script.error.build_error_cause"),
|
@@ -193,7 +188,9 @@ module Script
|
|
193
188
|
}
|
194
189
|
when Layers::Infrastructure::Errors::GraphqlError
|
195
190
|
{
|
196
|
-
cause_of_error: ShopifyCli::Context.message(
|
191
|
+
cause_of_error: ShopifyCli::Context.message(
|
192
|
+
"script.error.graphql_error_cause", JSON.pretty_generate(e.errors)
|
193
|
+
),
|
197
194
|
help_suggestion: ShopifyCli::Context.message("script.error.graphql_error_help"),
|
198
195
|
}
|
199
196
|
when Layers::Infrastructure::Errors::ScriptRepushError
|
@@ -201,25 +198,11 @@ module Script
|
|
201
198
|
cause_of_error: ShopifyCli::Context.message("script.error.script_repush_cause", e.api_key),
|
202
199
|
help_suggestion: ShopifyCli::Context.message("script.error.script_repush_help"),
|
203
200
|
}
|
204
|
-
when Layers::Infrastructure::Errors::ScriptServiceUserError
|
205
|
-
{
|
206
|
-
cause_of_error: ShopifyCli::Context.message("script.error.user_error_cause"),
|
207
|
-
help_suggestion: ShopifyCli::Context.message("script.error.user_error_help"),
|
208
|
-
}
|
209
201
|
when Layers::Infrastructure::Errors::ShopAuthenticationError
|
210
202
|
{
|
211
203
|
cause_of_error: ShopifyCli::Context.message("script.error.shop_auth_cause"),
|
212
204
|
help_suggestion: ShopifyCli::Context.message("script.error.shop_auth_help"),
|
213
205
|
}
|
214
|
-
when Layers::Infrastructure::Errors::ShopScriptConflictError
|
215
|
-
{
|
216
|
-
cause_of_error: ShopifyCli::Context.message("script.error.shop_script_conflict_cause"),
|
217
|
-
help_suggestion: ShopifyCli::Context.message("script.error.shop_script_conflict_help"),
|
218
|
-
}
|
219
|
-
when Layers::Infrastructure::Errors::ShopScriptUndefinedError
|
220
|
-
{
|
221
|
-
cause_of_error: ShopifyCli::Context.message("script.error.shop_script_undefined_cause"),
|
222
|
-
}
|
223
206
|
when Layers::Infrastructure::Errors::BuildScriptNotFoundError
|
224
207
|
{
|
225
208
|
cause_of_error: ShopifyCli::Context.message("script.error.build_script_not_found"),
|
data/lib/shopify-cli/context.rb
CHANGED
@@ -144,6 +144,34 @@ module ShopifyCli
|
|
144
144
|
File.write(ctx_path(fname), content)
|
145
145
|
end
|
146
146
|
|
147
|
+
# will read a binary file relative to the context root unless the file path is absolute.
|
148
|
+
#
|
149
|
+
# #### Parameters
|
150
|
+
# * `fname` - filename of the file that you are reading, relative to root unless it is absolute.
|
151
|
+
#
|
152
|
+
# #### Example
|
153
|
+
#
|
154
|
+
# @ctx.read('binary.out')
|
155
|
+
#
|
156
|
+
def binread(fname)
|
157
|
+
File.binread(ctx_path(fname))
|
158
|
+
end
|
159
|
+
|
160
|
+
# will write/overwrite a binary file with the provided contents, relative to the context root
|
161
|
+
# unless the file path is absolute.
|
162
|
+
#
|
163
|
+
# #### Parameters
|
164
|
+
# * `fname` - filename of the file that you are writing, relative to root unless it is absolute.
|
165
|
+
# * `content` - the body contents of the file that you are writing
|
166
|
+
#
|
167
|
+
# #### Example
|
168
|
+
#
|
169
|
+
# @ctx.binwrite('binary.out', 'ASCII-8BIT encoded binary')
|
170
|
+
#
|
171
|
+
def binwrite(fname, content)
|
172
|
+
File.binwrite(ctx_path(fname), content)
|
173
|
+
end
|
174
|
+
|
147
175
|
# will change directories and update the root, the filepath is relative to the command root unless absolute
|
148
176
|
#
|
149
177
|
# #### Parameters
|
data/lib/shopify-cli/version.rb
CHANGED
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.
|
4
|
+
version: 1.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shopify
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -144,6 +144,8 @@ 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
|
148
|
+
- lib/project_types/extension/features/argo_serve.rb
|
147
149
|
- lib/project_types/extension/features/argo_setup.rb
|
148
150
|
- lib/project_types/extension/features/argo_setup_step.rb
|
149
151
|
- lib/project_types/extension/features/argo_setup_steps.rb
|
@@ -208,20 +210,14 @@ files:
|
|
208
210
|
- lib/project_types/rails/ruby.rb
|
209
211
|
- lib/project_types/script/cli.rb
|
210
212
|
- lib/project_types/script/commands/create.rb
|
211
|
-
- lib/project_types/script/commands/disable.rb
|
212
|
-
- lib/project_types/script/commands/enable.rb
|
213
213
|
- lib/project_types/script/commands/push.rb
|
214
214
|
- lib/project_types/script/config/extension_points.yml
|
215
215
|
- lib/project_types/script/errors.rb
|
216
216
|
- lib/project_types/script/forms/create.rb
|
217
217
|
- lib/project_types/script/graphql/app_script_update_or_create.graphql
|
218
218
|
- lib/project_types/script/graphql/script_service_proxy.graphql
|
219
|
-
- lib/project_types/script/graphql/shop_script_delete.graphql
|
220
|
-
- lib/project_types/script/graphql/shop_script_update_or_create.graphql
|
221
219
|
- lib/project_types/script/layers/application/build_script.rb
|
222
220
|
- lib/project_types/script/layers/application/create_script.rb
|
223
|
-
- lib/project_types/script/layers/application/disable_script.rb
|
224
|
-
- lib/project_types/script/layers/application/enable_script.rb
|
225
221
|
- lib/project_types/script/layers/application/extension_points.rb
|
226
222
|
- lib/project_types/script/layers/application/project_dependencies.rb
|
227
223
|
- lib/project_types/script/layers/application/push_script.rb
|
@@ -230,19 +226,19 @@ files:
|
|
230
226
|
- lib/project_types/script/layers/domain/extension_point.rb
|
231
227
|
- lib/project_types/script/layers/domain/metadata.rb
|
232
228
|
- lib/project_types/script/layers/domain/push_package.rb
|
229
|
+
- lib/project_types/script/layers/domain/script_project.rb
|
233
230
|
- lib/project_types/script/layers/infrastructure/assemblyscript_project_creator.rb
|
234
231
|
- lib/project_types/script/layers/infrastructure/assemblyscript_task_runner.rb
|
235
|
-
- lib/project_types/script/layers/infrastructure/config_ui_repository.rb
|
236
232
|
- lib/project_types/script/layers/infrastructure/errors.rb
|
237
233
|
- lib/project_types/script/layers/infrastructure/extension_point_repository.rb
|
238
234
|
- lib/project_types/script/layers/infrastructure/project_creator.rb
|
239
235
|
- lib/project_types/script/layers/infrastructure/push_package_repository.rb
|
240
236
|
- lib/project_types/script/layers/infrastructure/rust_project_creator.rb
|
241
237
|
- lib/project_types/script/layers/infrastructure/rust_task_runner.rb
|
238
|
+
- lib/project_types/script/layers/infrastructure/script_project_repository.rb
|
242
239
|
- lib/project_types/script/layers/infrastructure/script_service.rb
|
243
240
|
- lib/project_types/script/layers/infrastructure/task_runner.rb
|
244
241
|
- lib/project_types/script/messages/messages.rb
|
245
|
-
- lib/project_types/script/script_project.rb
|
246
242
|
- lib/project_types/script/ui/error_handler.rb
|
247
243
|
- lib/project_types/script/ui/printing_spinner.rb
|
248
244
|
- lib/project_types/script/ui/strict_spinner.rb
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Script
|
4
|
-
module Commands
|
5
|
-
class Disable < ShopifyCli::Command
|
6
|
-
def call(_args, _name)
|
7
|
-
ShopifyCli::Tasks::EnsureEnv.call(@ctx, required: [:api_key, :secret, :shop])
|
8
|
-
project = ScriptProject.current
|
9
|
-
Layers::Application::DisableScript.call(
|
10
|
-
ctx: @ctx,
|
11
|
-
api_key: project.env[:api_key],
|
12
|
-
shop_domain: project.env[:shop],
|
13
|
-
extension_point_type: project.extension_point_type
|
14
|
-
)
|
15
|
-
@ctx.puts(@ctx.message("script.disable.script_disabled"))
|
16
|
-
rescue StandardError => e
|
17
|
-
UI::ErrorHandler.pretty_print_and_raise(e, failed_op: @ctx.message("script.disable.error.operation_failed"))
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.help
|
21
|
-
ShopifyCli::Context.message("script.disable.help", ShopifyCli::TOOL_NAME)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,80 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Script
|
4
|
-
module Commands
|
5
|
-
class Enable < ShopifyCli::Command
|
6
|
-
options do |parser, flags|
|
7
|
-
parser.on("--config_props=KEYVALUEPAIRS", Array) { |t| flags[:config_props] = t }
|
8
|
-
parser.on("--config-props=KEYVALUEPAIRS", Array) { |t| flags[:config_props] = t }
|
9
|
-
parser.on("--config_file=CONFIGFILEPATH") { |t| flags[:config_file] = t }
|
10
|
-
parser.on("--config-file=CONFIGFILEPATH") { |t| flags[:config_file] = t }
|
11
|
-
end
|
12
|
-
|
13
|
-
def call(_args, _name)
|
14
|
-
ShopifyCli::Tasks::EnsureEnv.call(@ctx, required: [:api_key, :secret, :shop])
|
15
|
-
project = ScriptProject.current
|
16
|
-
api_key = project.env[:api_key]
|
17
|
-
shop_domain = project.env[:shop]
|
18
|
-
|
19
|
-
Layers::Application::EnableScript.call(
|
20
|
-
ctx: @ctx,
|
21
|
-
api_key: api_key,
|
22
|
-
shop_domain: shop_domain,
|
23
|
-
configuration: acquire_configuration(**slice(options.flags, :config_file, :config_props)),
|
24
|
-
extension_point_type: project.extension_point_type,
|
25
|
-
title: project.script_name
|
26
|
-
)
|
27
|
-
@ctx.puts(@ctx.message(
|
28
|
-
"script.enable.script_enabled",
|
29
|
-
api_key: api_key,
|
30
|
-
shop_domain: shop_domain,
|
31
|
-
type: project.extension_point_type.capitalize,
|
32
|
-
title: project.script_name
|
33
|
-
))
|
34
|
-
@ctx.puts(@ctx.message("script.enable.info"))
|
35
|
-
rescue Errors::InvalidConfigYAMLError => e
|
36
|
-
UI::ErrorHandler.pretty_print_and_raise(e)
|
37
|
-
rescue StandardError => e
|
38
|
-
UI::ErrorHandler.pretty_print_and_raise(e, failed_op: @ctx.message("script.enable.error.operation_failed"))
|
39
|
-
end
|
40
|
-
|
41
|
-
def self.help
|
42
|
-
ShopifyCli::Context.message("script.enable.help", ShopifyCli::TOOL_NAME)
|
43
|
-
end
|
44
|
-
|
45
|
-
private
|
46
|
-
|
47
|
-
def acquire_configuration(config_file: nil, config_props: nil)
|
48
|
-
properties = {}
|
49
|
-
properties = YAML.load(File.read(config_file)) unless config_file.nil?
|
50
|
-
properties = properties.merge(parse_config_props(config_props)) unless config_props.nil?
|
51
|
-
|
52
|
-
configuration = { entries: [] }
|
53
|
-
properties.each do |key, value|
|
54
|
-
configuration[:entries].push({
|
55
|
-
key: key,
|
56
|
-
value: value,
|
57
|
-
})
|
58
|
-
end
|
59
|
-
configuration
|
60
|
-
rescue Errno::ENOENT, Psych::SyntaxError
|
61
|
-
raise Errors::InvalidConfigYAMLError, options.flags[:config_file]
|
62
|
-
end
|
63
|
-
|
64
|
-
def parse_config_props(config_props)
|
65
|
-
Hash[
|
66
|
-
config_props.map do |s|
|
67
|
-
args = s.split(":").map(&:strip)
|
68
|
-
raise Errors::InvalidConfigProps unless args.size == 2
|
69
|
-
args
|
70
|
-
end
|
71
|
-
]
|
72
|
-
end
|
73
|
-
|
74
|
-
# No slice pre Ruby 2.5 so roll our own
|
75
|
-
def slice(hash, *keys)
|
76
|
-
Hash[hash.to_a - hash.select { |key, _value| !keys.include?(key) }.to_a]
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|