shopify-cli 1.6.0 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile +12 -12
- data/Rakefile +32 -30
- data/bin/load_shopify.rb +6 -6
- data/bin/shopify +2 -2
- data/ext/shopify-cli/extconf.rb +7 -7
- data/lib/docgen/markdown.rb +11 -11
- data/lib/{project_types/extension/graphql → graphql}/get_app_by_api_key.graphql +0 -0
- data/lib/project_types/extension/cli.rb +52 -45
- data/lib/project_types/extension/commands/build.rb +3 -3
- data/lib/project_types/extension/commands/create.rb +16 -9
- data/lib/project_types/extension/commands/extension_command.rb +8 -5
- data/lib/project_types/extension/commands/push.rb +8 -8
- data/lib/project_types/extension/commands/register.rb +19 -30
- data/lib/project_types/extension/commands/serve.rb +2 -2
- data/lib/project_types/extension/commands/tunnel.rb +12 -12
- data/lib/project_types/extension/extension_project.rb +4 -4
- data/lib/project_types/extension/extension_project_keys.rb +4 -4
- data/lib/project_types/extension/features/argo.rb +13 -13
- data/lib/project_types/extension/features/argo_config.rb +5 -5
- data/lib/project_types/extension/features/argo_dependencies.rb +5 -5
- data/lib/project_types/extension/features/argo_setup.rb +2 -2
- data/lib/project_types/extension/features/argo_setup_steps.rb +4 -4
- data/lib/project_types/extension/forms/create.rb +28 -34
- data/lib/project_types/extension/forms/questions/ask_app.rb +53 -0
- data/lib/project_types/extension/forms/questions/ask_name.rb +40 -0
- data/lib/project_types/extension/forms/questions/ask_type.rb +36 -0
- data/lib/project_types/extension/messages/messages.rb +53 -52
- data/lib/project_types/extension/models/lazy_specification_handler.rb +12 -0
- data/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +1 -1
- data/lib/project_types/extension/models/specification_handlers/default.rb +2 -2
- data/lib/project_types/extension/models/specifications.rb +3 -3
- data/lib/project_types/extension/tasks/configure_features.rb +4 -4
- data/lib/project_types/extension/tasks/converters/app_converter.rb +6 -6
- data/lib/project_types/extension/tasks/converters/registration_converter.rb +6 -6
- data/lib/project_types/extension/tasks/converters/validation_error_converter.rb +4 -4
- data/lib/project_types/extension/tasks/converters/version_converter.rb +7 -7
- data/lib/project_types/extension/tasks/create_extension.rb +4 -4
- data/lib/project_types/extension/tasks/fetch_specifications.rb +4 -4
- data/lib/project_types/extension/tasks/get_app.rb +4 -4
- data/lib/project_types/extension/tasks/get_apps.rb +3 -3
- data/lib/project_types/extension/tasks/update_draft.rb +4 -4
- data/lib/project_types/extension/tasks/user_errors.rb +4 -4
- data/lib/project_types/node/cli.rb +19 -19
- data/lib/project_types/node/commands/connect.rb +3 -3
- data/lib/project_types/node/commands/create.rb +40 -38
- data/lib/project_types/node/commands/deploy.rb +4 -4
- data/lib/project_types/node/commands/deploy/heroku.rb +24 -24
- data/lib/project_types/node/commands/generate.rb +8 -8
- data/lib/project_types/node/commands/open.rb +2 -2
- data/lib/project_types/node/commands/populate.rb +6 -6
- data/lib/project_types/node/commands/populate/customer.rb +5 -5
- data/lib/project_types/node/commands/populate/draft_order.rb +5 -5
- data/lib/project_types/node/commands/populate/product.rb +5 -5
- data/lib/project_types/node/commands/serve.rb +9 -9
- data/lib/project_types/node/commands/tunnel.rb +7 -7
- data/lib/project_types/node/forms/create.rb +7 -7
- data/lib/project_types/node/messages/messages.rb +3 -3
- data/lib/project_types/rails/cli.rb +21 -21
- data/lib/project_types/rails/commands/connect.rb +3 -3
- data/lib/project_types/rails/commands/create.rb +51 -48
- data/lib/project_types/rails/commands/deploy.rb +4 -4
- data/lib/project_types/rails/commands/deploy/heroku.rb +30 -30
- data/lib/project_types/rails/commands/generate.rb +7 -7
- data/lib/project_types/rails/commands/generate/webhook.rb +6 -6
- data/lib/project_types/rails/commands/open.rb +2 -2
- data/lib/project_types/rails/commands/populate.rb +6 -6
- data/lib/project_types/rails/commands/populate/customer.rb +5 -5
- data/lib/project_types/rails/commands/populate/draft_order.rb +5 -5
- data/lib/project_types/rails/commands/populate/product.rb +5 -5
- data/lib/project_types/rails/commands/serve.rb +11 -11
- data/lib/project_types/rails/commands/tunnel.rb +7 -7
- data/lib/project_types/rails/forms/create.rb +23 -23
- data/lib/project_types/rails/gem.rb +23 -23
- data/lib/project_types/rails/messages/messages.rb +4 -4
- data/lib/project_types/rails/ruby.rb +2 -2
- data/lib/project_types/script/cli.rb +40 -40
- data/lib/project_types/script/commands/create.rb +9 -8
- data/lib/project_types/script/commands/disable.rb +3 -3
- data/lib/project_types/script/commands/enable.rb +9 -7
- data/lib/project_types/script/commands/push.rb +5 -4
- data/lib/project_types/script/errors.rb +17 -0
- data/lib/project_types/script/forms/create.rb +5 -5
- data/lib/project_types/script/graphql/app_script_update_or_create.graphql +2 -0
- data/lib/project_types/script/layers/application/build_script.rb +6 -8
- data/lib/project_types/script/layers/application/create_script.rb +2 -2
- data/lib/project_types/script/layers/application/disable_script.rb +2 -2
- data/lib/project_types/script/layers/application/enable_script.rb +2 -2
- data/lib/project_types/script/layers/application/project_dependencies.rb +4 -4
- data/lib/project_types/script/layers/application/push_script.rb +4 -12
- data/lib/project_types/script/layers/domain/push_package.rb +5 -1
- data/lib/project_types/script/layers/infrastructure/assemblyscript_project_creator.rb +3 -3
- data/lib/project_types/script/layers/infrastructure/assemblyscript_task_runner.rb +10 -10
- data/lib/project_types/script/layers/infrastructure/errors.rb +1 -1
- data/lib/project_types/script/layers/infrastructure/extension_point_repository.rb +2 -2
- data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +12 -17
- data/lib/project_types/script/layers/infrastructure/rust_project_creator.rb +4 -4
- data/lib/project_types/script/layers/infrastructure/rust_task_runner.rb +1 -1
- data/lib/project_types/script/layers/infrastructure/script_service.rb +18 -16
- data/lib/project_types/script/messages/messages.rb +14 -8
- data/lib/project_types/script/script_project.rb +27 -5
- data/lib/project_types/script/ui/error_handler.rb +80 -68
- data/lib/project_types/script/ui/printing_spinner.rb +1 -1
- data/lib/project_types/script/ui/strict_spinner.rb +1 -1
- data/lib/project_types/theme/cli.rb +19 -19
- data/lib/project_types/theme/commands/connect.rb +12 -12
- data/lib/project_types/theme/commands/create.rb +11 -11
- data/lib/project_types/theme/commands/deploy.rb +8 -8
- data/lib/project_types/theme/commands/generate.rb +3 -3
- data/lib/project_types/theme/commands/generate/env.rb +15 -15
- data/lib/project_types/theme/commands/push.rb +15 -15
- data/lib/project_types/theme/commands/serve.rb +5 -5
- data/lib/project_types/theme/forms/connect.rb +4 -4
- data/lib/project_types/theme/forms/create.rb +5 -5
- data/lib/project_types/theme/tasks/ensure_themekit_installed.rb +22 -22
- data/lib/project_types/theme/themekit.rb +15 -15
- data/lib/rubygems_plugin.rb +3 -3
- data/lib/shopify-cli/admin_api.rb +11 -11
- data/lib/shopify-cli/admin_api/populate_resource_command.rb +17 -17
- data/lib/shopify-cli/admin_api/schema.rb +3 -3
- data/lib/shopify-cli/api.rb +10 -10
- data/lib/shopify-cli/command.rb +1 -1
- data/lib/shopify-cli/commands.rb +9 -9
- data/lib/shopify-cli/commands/config.rb +28 -52
- data/lib/shopify-cli/commands/connect.rb +10 -10
- data/lib/shopify-cli/commands/create.rb +5 -5
- data/lib/shopify-cli/commands/help.rb +6 -6
- data/lib/shopify-cli/commands/logout.rb +3 -3
- data/lib/shopify-cli/commands/system.rb +32 -32
- data/lib/shopify-cli/commands/version.rb +2 -2
- data/lib/shopify-cli/context.rb +23 -23
- data/lib/shopify-cli/core.rb +4 -4
- data/lib/shopify-cli/core/entry_point.rb +5 -5
- data/lib/shopify-cli/core/executor.rb +1 -1
- data/lib/shopify-cli/core/help_resolver.rb +2 -2
- data/lib/shopify-cli/core/monorail.rb +16 -16
- data/lib/shopify-cli/db.rb +2 -2
- data/lib/shopify-cli/feature.rb +1 -1
- data/lib/shopify-cli/form.rb +1 -1
- data/lib/shopify-cli/git.rb +17 -17
- data/lib/shopify-cli/helpers.rb +1 -1
- data/lib/shopify-cli/helpers/haikunator.rb +1 -1
- data/lib/shopify-cli/heroku.rb +28 -28
- data/lib/shopify-cli/http_request.rb +2 -2
- data/lib/shopify-cli/js_deps.rb +12 -12
- data/lib/shopify-cli/js_system.rb +5 -5
- data/lib/shopify-cli/lazy_delegator.rb +55 -0
- data/lib/shopify-cli/messages/messages.rb +4 -14
- data/lib/shopify-cli/oauth.rb +25 -25
- data/lib/shopify-cli/oauth/servlet.rb +9 -9
- data/lib/shopify-cli/options.rb +3 -3
- data/lib/shopify-cli/packager.rb +24 -24
- data/lib/shopify-cli/partners_api.rb +16 -16
- data/lib/shopify-cli/partners_api/organizations.rb +10 -10
- data/lib/shopify-cli/process_supervision.rb +7 -7
- data/lib/shopify-cli/project.rb +16 -16
- data/lib/shopify-cli/project_type.rb +3 -3
- data/lib/shopify-cli/resources.rb +1 -1
- data/lib/shopify-cli/resources/env_file.rb +9 -9
- data/lib/shopify-cli/result.rb +8 -8
- data/lib/shopify-cli/shopifolk.rb +6 -9
- data/lib/shopify-cli/sub_command.rb +1 -1
- data/lib/shopify-cli/task.rb +3 -3
- data/lib/shopify-cli/tasks.rb +7 -7
- data/lib/shopify-cli/tasks/create_api_client.rb +5 -5
- data/lib/shopify-cli/tasks/ensure_dev_store.rb +11 -11
- data/lib/shopify-cli/tasks/ensure_env.rb +15 -15
- data/lib/shopify-cli/tasks/ensure_loopback_url.rb +4 -4
- data/lib/shopify-cli/tasks/select_org_and_shop.rb +19 -19
- data/lib/shopify-cli/tasks/update_dashboard_urls.rb +10 -10
- data/lib/shopify-cli/transform_data_structure.rb +86 -0
- data/lib/shopify-cli/tunnel.rb +30 -30
- data/lib/shopify-cli/version.rb +1 -1
- data/lib/shopify_cli.rb +56 -54
- data/shopify-cli.gemspec +6 -6
- data/vendor/gen/template/bin/update-deps +9 -9
- metadata +9 -4
- data/lib/project_types/extension/forms/register.rb +0 -47
@@ -4,10 +4,11 @@ module Script
|
|
4
4
|
module Commands
|
5
5
|
class Create < ShopifyCli::SubCommand
|
6
6
|
options do |parser, flags|
|
7
|
-
parser.on(
|
8
|
-
parser.on(
|
9
|
-
parser.on(
|
10
|
-
parser.on(
|
7
|
+
parser.on("--name=NAME") { |name| flags[:name] = name }
|
8
|
+
parser.on("--description=DESCRIPTION") { |description| flags[:description] = description }
|
9
|
+
parser.on("--extension_point=EP_NAME") { |ep_name| flags[:extension_point] = ep_name }
|
10
|
+
parser.on("--extension-point=EP_NAME") { |ep_name| flags[:extension_point] = ep_name }
|
11
|
+
parser.on("--language=LANGUAGE") { |language| flags[:language] = language }
|
11
12
|
end
|
12
13
|
|
13
14
|
def call(args, _name)
|
@@ -27,17 +28,17 @@ module Script
|
|
27
28
|
extension_point_type: form.extension_point,
|
28
29
|
description: form.description
|
29
30
|
)
|
30
|
-
@ctx.puts(@ctx.message(
|
31
|
+
@ctx.puts(@ctx.message("script.create.change_directory_notice", project.script_name))
|
31
32
|
rescue Script::Errors::ScriptProjectAlreadyExistsError => e
|
32
|
-
UI::ErrorHandler.pretty_print_and_raise(e, failed_op: @ctx.message(
|
33
|
+
UI::ErrorHandler.pretty_print_and_raise(e, failed_op: @ctx.message("script.create.error.operation_failed"))
|
33
34
|
rescue StandardError => e
|
34
35
|
ScriptProject.cleanup(ctx: @ctx, script_name: form.name, root_dir: cur_dir) if form
|
35
|
-
UI::ErrorHandler.pretty_print_and_raise(e, failed_op: @ctx.message(
|
36
|
+
UI::ErrorHandler.pretty_print_and_raise(e, failed_op: @ctx.message("script.create.error.operation_failed"))
|
36
37
|
end
|
37
38
|
|
38
39
|
def self.help
|
39
40
|
allowed_values = Script::Layers::Application::ExtensionPoints.types.map { |type| "{{cyan:#{type}}}" }
|
40
|
-
ShopifyCli::Context.message(
|
41
|
+
ShopifyCli::Context.message("script.create.help", ShopifyCli::TOOL_NAME, allowed_values.join(", "))
|
41
42
|
end
|
42
43
|
end
|
43
44
|
end
|
@@ -12,13 +12,13 @@ module Script
|
|
12
12
|
shop_domain: project.env[:shop],
|
13
13
|
extension_point_type: project.extension_point_type
|
14
14
|
)
|
15
|
-
@ctx.puts(@ctx.message(
|
15
|
+
@ctx.puts(@ctx.message("script.disable.script_disabled"))
|
16
16
|
rescue StandardError => e
|
17
|
-
UI::ErrorHandler.pretty_print_and_raise(e, failed_op: @ctx.message(
|
17
|
+
UI::ErrorHandler.pretty_print_and_raise(e, failed_op: @ctx.message("script.disable.error.operation_failed"))
|
18
18
|
end
|
19
19
|
|
20
20
|
def self.help
|
21
|
-
ShopifyCli::Context.message(
|
21
|
+
ShopifyCli::Context.message("script.disable.help", ShopifyCli::TOOL_NAME)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -4,8 +4,10 @@ module Script
|
|
4
4
|
module Commands
|
5
5
|
class Enable < ShopifyCli::Command
|
6
6
|
options do |parser, flags|
|
7
|
-
parser.on(
|
8
|
-
parser.on(
|
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 }
|
9
11
|
end
|
10
12
|
|
11
13
|
def call(_args, _name)
|
@@ -23,21 +25,21 @@ module Script
|
|
23
25
|
title: project.script_name
|
24
26
|
)
|
25
27
|
@ctx.puts(@ctx.message(
|
26
|
-
|
28
|
+
"script.enable.script_enabled",
|
27
29
|
api_key: api_key,
|
28
30
|
shop_domain: shop_domain,
|
29
31
|
type: project.extension_point_type.capitalize,
|
30
32
|
title: project.script_name
|
31
33
|
))
|
32
|
-
@ctx.puts(@ctx.message(
|
34
|
+
@ctx.puts(@ctx.message("script.enable.info"))
|
33
35
|
rescue Errors::InvalidConfigYAMLError => e
|
34
36
|
UI::ErrorHandler.pretty_print_and_raise(e)
|
35
37
|
rescue StandardError => e
|
36
|
-
UI::ErrorHandler.pretty_print_and_raise(e, failed_op: @ctx.message(
|
38
|
+
UI::ErrorHandler.pretty_print_and_raise(e, failed_op: @ctx.message("script.enable.error.operation_failed"))
|
37
39
|
end
|
38
40
|
|
39
41
|
def self.help
|
40
|
-
ShopifyCli::Context.message(
|
42
|
+
ShopifyCli::Context.message("script.enable.help", ShopifyCli::TOOL_NAME)
|
41
43
|
end
|
42
44
|
|
43
45
|
private
|
@@ -62,7 +64,7 @@ module Script
|
|
62
64
|
def parse_config_props(config_props)
|
63
65
|
Hash[
|
64
66
|
config_props.map do |s|
|
65
|
-
args = s.split(
|
67
|
+
args = s.split(":").map(&:strip)
|
66
68
|
raise Errors::InvalidConfigProps unless args.size == 2
|
67
69
|
args
|
68
70
|
end
|
@@ -4,7 +4,7 @@ module Script
|
|
4
4
|
module Commands
|
5
5
|
class Push < ShopifyCli::Command
|
6
6
|
options do |parser, flags|
|
7
|
-
parser.on(
|
7
|
+
parser.on("--force") { |t| flags[:force] = t }
|
8
8
|
end
|
9
9
|
|
10
10
|
def call(_args, _name)
|
@@ -14,13 +14,14 @@ module Script
|
|
14
14
|
return @ctx.puts(self.class.help) unless api_key
|
15
15
|
|
16
16
|
Layers::Application::PushScript.call(ctx: @ctx, force: options.flags.key?(:force))
|
17
|
-
@ctx.puts(@ctx.message(
|
17
|
+
@ctx.puts(@ctx.message("script.push.script_pushed", api_key: api_key))
|
18
18
|
rescue StandardError => e
|
19
|
-
|
19
|
+
msg = @ctx.message("script.push.error.operation_failed", api_key: ShopifyCli::Project.current.env.api_key)
|
20
|
+
UI::ErrorHandler.pretty_print_and_raise(e, failed_op: msg)
|
20
21
|
end
|
21
22
|
|
22
23
|
def self.help
|
23
|
-
ShopifyCli::Context.message(
|
24
|
+
ShopifyCli::Context.message("script.push.help", ShopifyCli::TOOL_NAME)
|
24
25
|
end
|
25
26
|
end
|
26
27
|
end
|
@@ -4,6 +4,23 @@ module Script
|
|
4
4
|
module Errors
|
5
5
|
class InvalidContextError < ScriptProjectError; end
|
6
6
|
class InvalidScriptNameError < ScriptProjectError; end
|
7
|
+
|
8
|
+
class InvalidConfigUiDefinitionError < ScriptProjectError
|
9
|
+
attr_reader :filename
|
10
|
+
def initialize(filename)
|
11
|
+
super()
|
12
|
+
@filename = filename
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class MissingSpecifiedConfigUiDefinitionError < ScriptProjectError
|
17
|
+
attr_reader :filename
|
18
|
+
def initialize(filename)
|
19
|
+
super()
|
20
|
+
@filename = filename
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
7
24
|
class NoExistingAppsError < ScriptProjectError; end
|
8
25
|
class NoExistingOrganizationsError < ScriptProjectError; end
|
9
26
|
|
@@ -16,21 +16,21 @@ module Script
|
|
16
16
|
|
17
17
|
def ask_extension_point
|
18
18
|
CLI::UI::Prompt.ask(
|
19
|
-
@ctx.message(
|
19
|
+
@ctx.message("script.forms.create.select_extension_point"),
|
20
20
|
options: Layers::Application::ExtensionPoints.non_deprecated_types
|
21
21
|
)
|
22
22
|
end
|
23
23
|
|
24
24
|
def ask_name
|
25
|
-
CLI::UI::Prompt.ask(@ctx.message(
|
25
|
+
CLI::UI::Prompt.ask(@ctx.message("script.forms.create.script_name"))
|
26
26
|
end
|
27
27
|
|
28
28
|
def ask_description
|
29
|
-
CLI::UI::Prompt.ask(@ctx.message(
|
29
|
+
CLI::UI::Prompt.ask(@ctx.message("script.forms.create.description"))
|
30
30
|
end
|
31
31
|
|
32
32
|
def valid_name
|
33
|
-
n = (name || ask_name).downcase.gsub(
|
33
|
+
n = (name || ask_name).downcase.gsub(" ", "_")
|
34
34
|
return n if n.match?(/^[0-9A-Za-z_-]*$/)
|
35
35
|
raise Errors::InvalidScriptNameError
|
36
36
|
end
|
@@ -48,7 +48,7 @@ module Script
|
|
48
48
|
return all_languages.first if all_languages.count == 1
|
49
49
|
|
50
50
|
CLI::UI::Prompt.ask(
|
51
|
-
ctx.message(
|
51
|
+
ctx.message("script.forms.create.select_language"),
|
52
52
|
options: all_languages
|
53
53
|
)
|
54
54
|
end
|
@@ -2,6 +2,7 @@ mutation AppScriptUpdateOrCreate(
|
|
2
2
|
$extensionPointName: ExtensionPointName!,
|
3
3
|
$title: String,
|
4
4
|
$description: String,
|
5
|
+
$configUi: String,
|
5
6
|
$sourceCode: String,
|
6
7
|
$language: String,
|
7
8
|
$force: Boolean,
|
@@ -13,6 +14,7 @@ mutation AppScriptUpdateOrCreate(
|
|
13
14
|
extensionPointName: $extensionPointName
|
14
15
|
title: $title
|
15
16
|
description: $description
|
17
|
+
configUi: $configUi
|
16
18
|
sourceCode: $sourceCode
|
17
19
|
language: $language
|
18
20
|
force: $force
|
@@ -5,19 +5,17 @@ module Script
|
|
5
5
|
module Application
|
6
6
|
class BuildScript
|
7
7
|
class << self
|
8
|
-
def call(ctx:, task_runner:,
|
9
|
-
CLI::UI::Frame.open(ctx.message(
|
8
|
+
def call(ctx:, task_runner:, script_project:)
|
9
|
+
CLI::UI::Frame.open(ctx.message("script.application.building")) do
|
10
10
|
begin
|
11
|
-
UI::StrictSpinner.spin(ctx.message(
|
11
|
+
UI::StrictSpinner.spin(ctx.message("script.application.building_script")) do |spinner|
|
12
12
|
Infrastructure::PushPackageRepository.new(ctx: ctx).create_push_package(
|
13
|
-
|
14
|
-
script_name: script_name,
|
15
|
-
description: description,
|
13
|
+
script_project: script_project,
|
16
14
|
script_content: task_runner.build,
|
17
15
|
compiled_type: task_runner.compiled_type,
|
18
|
-
metadata: task_runner.metadata
|
16
|
+
metadata: task_runner.metadata,
|
19
17
|
)
|
20
|
-
spinner.update_title(ctx.message(
|
18
|
+
spinner.update_title(ctx.message("script.application.built"))
|
21
19
|
end
|
22
20
|
rescue StandardError => e
|
23
21
|
CLI::UI::Frame.with_frame_color_override(:red) do
|
@@ -40,9 +40,9 @@ module Script
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def bootstrap(ctx, project_creator)
|
43
|
-
UI::StrictSpinner.spin(ctx.message(
|
43
|
+
UI::StrictSpinner.spin(ctx.message("script.create.creating")) do |spinner|
|
44
44
|
project_creator.bootstrap
|
45
|
-
spinner.update_title(ctx.message(
|
45
|
+
spinner.update_title(ctx.message("script.create.created"))
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
@@ -5,14 +5,14 @@ module Script
|
|
5
5
|
module Application
|
6
6
|
class DisableScript
|
7
7
|
def self.call(ctx:, api_key:, shop_domain:, extension_point_type:)
|
8
|
-
UI::PrintingSpinner.spin(ctx, ctx.message(
|
8
|
+
UI::PrintingSpinner.spin(ctx, ctx.message("script.application.disabling")) do |p_ctx, spinner|
|
9
9
|
script_service = Infrastructure::ScriptService.new(ctx: p_ctx)
|
10
10
|
script_service.disable(
|
11
11
|
api_key: api_key,
|
12
12
|
shop_domain: shop_domain,
|
13
13
|
extension_point_type: extension_point_type,
|
14
14
|
)
|
15
|
-
spinner.update_title(p_ctx.message(
|
15
|
+
spinner.update_title(p_ctx.message("script.application.disabled"))
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -5,7 +5,7 @@ module Script
|
|
5
5
|
module Application
|
6
6
|
class EnableScript
|
7
7
|
def self.call(ctx:, api_key:, shop_domain:, configuration:, extension_point_type:, title:)
|
8
|
-
UI::PrintingSpinner.spin(ctx, ctx.message(
|
8
|
+
UI::PrintingSpinner.spin(ctx, ctx.message("script.application.enabling")) do |p_ctx, spinner|
|
9
9
|
script_service = Infrastructure::ScriptService.new(ctx: p_ctx)
|
10
10
|
script_service.enable(
|
11
11
|
api_key: api_key,
|
@@ -14,7 +14,7 @@ module Script
|
|
14
14
|
extension_point_type: extension_point_type,
|
15
15
|
title: title
|
16
16
|
)
|
17
|
-
spinner.update_title(p_ctx.message(
|
17
|
+
spinner.update_title(p_ctx.message("script.application.enabled"))
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
@@ -3,14 +3,14 @@ module Script
|
|
3
3
|
module Application
|
4
4
|
class ProjectDependencies
|
5
5
|
def self.install(ctx:, task_runner:)
|
6
|
-
CLI::UI::Frame.open(ctx.message(
|
6
|
+
CLI::UI::Frame.open(ctx.message("script.project_deps.checking_with_npm")) do
|
7
7
|
begin
|
8
8
|
if task_runner.dependencies_installed?
|
9
|
-
ctx.puts(ctx.message(
|
9
|
+
ctx.puts(ctx.message("script.project_deps.none_required"))
|
10
10
|
else
|
11
|
-
UI::StrictSpinner.spin(ctx.message(
|
11
|
+
UI::StrictSpinner.spin(ctx.message("script.project_deps.installing")) do |spinner|
|
12
12
|
task_runner.install_dependencies
|
13
|
-
spinner.update_title(ctx.message(
|
13
|
+
spinner.update_title(ctx.message("script.project_deps.installed"))
|
14
14
|
end
|
15
15
|
end
|
16
16
|
true
|
@@ -9,24 +9,16 @@ module Script
|
|
9
9
|
script_project = ScriptProject.current
|
10
10
|
task_runner = Infrastructure::TaskRunner.for(ctx, script_project.language, script_project.script_name)
|
11
11
|
ProjectDependencies.install(ctx: ctx, task_runner: task_runner)
|
12
|
-
BuildScript.call(
|
13
|
-
ctx: ctx,
|
14
|
-
task_runner: task_runner,
|
15
|
-
extension_point_type: script_project.extension_point_type,
|
16
|
-
script_name: script_project.script_name,
|
17
|
-
description: script_project.description
|
18
|
-
)
|
12
|
+
BuildScript.call(ctx: ctx, task_runner: task_runner, script_project: script_project)
|
19
13
|
|
20
|
-
UI::PrintingSpinner.spin(ctx, ctx.message(
|
14
|
+
UI::PrintingSpinner.spin(ctx, ctx.message("script.application.pushing")) do |p_ctx, spinner|
|
21
15
|
package = Infrastructure::PushPackageRepository.new(ctx: p_ctx).get_push_package(
|
22
|
-
|
23
|
-
script_name: script_project.script_name,
|
24
|
-
description: script_project.description,
|
16
|
+
script_project: script_project,
|
25
17
|
compiled_type: task_runner.compiled_type,
|
26
18
|
metadata: task_runner.metadata
|
27
19
|
)
|
28
20
|
package.push(Infrastructure::ScriptService.new(ctx: p_ctx), script_project.api_key, force)
|
29
|
-
spinner.update_title(p_ctx.message(
|
21
|
+
spinner.update_title(p_ctx.message("script.application.pushed"))
|
30
22
|
end
|
31
23
|
end
|
32
24
|
end
|
@@ -8,6 +8,7 @@ module Script
|
|
8
8
|
:extension_point_type,
|
9
9
|
:script_name,
|
10
10
|
:description,
|
11
|
+
:config_ui,
|
11
12
|
:script_content,
|
12
13
|
:compiled_type,
|
13
14
|
:metadata
|
@@ -19,7 +20,8 @@ module Script
|
|
19
20
|
description:,
|
20
21
|
script_content:,
|
21
22
|
compiled_type:,
|
22
|
-
metadata
|
23
|
+
metadata:,
|
24
|
+
config_ui:
|
23
25
|
)
|
24
26
|
@id = id
|
25
27
|
@extension_point_type = extension_point_type
|
@@ -28,6 +30,7 @@ module Script
|
|
28
30
|
@script_content = script_content
|
29
31
|
@compiled_type = compiled_type
|
30
32
|
@metadata = metadata
|
33
|
+
@config_ui = config_ui
|
31
34
|
end
|
32
35
|
|
33
36
|
def push(script_service, api_key, force)
|
@@ -40,6 +43,7 @@ module Script
|
|
40
43
|
api_key: api_key,
|
41
44
|
force: force,
|
42
45
|
metadata: @metadata,
|
46
|
+
config_ui: @config_ui,
|
43
47
|
)
|
44
48
|
end
|
45
49
|
end
|
@@ -19,7 +19,7 @@ module Script
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def bootstrap
|
22
|
-
type = extension_point.type.gsub(
|
22
|
+
type = extension_point.type.gsub("_", "-")
|
23
23
|
out, status = ctx.capture2e(format(BOOTSTRAP, extension_point: type, base: path_to_project))
|
24
24
|
raise Domain::Errors::ServiceFailureError, out unless status.success?
|
25
25
|
end
|
@@ -28,10 +28,10 @@ module Script
|
|
28
28
|
|
29
29
|
def write_npmrc
|
30
30
|
ctx.system(
|
31
|
-
|
31
|
+
"npm", "--userconfig", "./.npmrc", "config", "set", "@shopify:registry", "https://registry.npmjs.com"
|
32
32
|
)
|
33
33
|
ctx.system(
|
34
|
-
|
34
|
+
"npm", "--userconfig", "./.npmrc", "config", "set", "engine-strict", "true"
|
35
35
|
)
|
36
36
|
end
|
37
37
|
|
@@ -40,7 +40,7 @@ module Script
|
|
40
40
|
|
41
41
|
def metadata
|
42
42
|
unless @ctx.file_exist?(METADATA_FILE)
|
43
|
-
msg = @ctx.message(
|
43
|
+
msg = @ctx.message("script.error.metadata_not_found_cause", METADATA_FILE)
|
44
44
|
raise Domain::Errors::MetadataNotFoundError, msg
|
45
45
|
end
|
46
46
|
|
@@ -54,7 +54,7 @@ module Script
|
|
54
54
|
output, status = @ctx.capture2e("node", "--version")
|
55
55
|
raise Errors::DependencyInstallError, output unless status.success?
|
56
56
|
|
57
|
-
require
|
57
|
+
require "semantic/semantic"
|
58
58
|
version = ::Semantic::Version.new(output[1..-1])
|
59
59
|
unless version >= ::Semantic::Version.new(AssemblyScriptProjectCreator::MIN_NODE_VERSION)
|
60
60
|
raise Errors::DependencyInstallError,
|
@@ -71,8 +71,8 @@ module Script
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def check_compilation_dependencies!
|
74
|
-
pkg = JSON.parse(File.read(
|
75
|
-
build_script = pkg.dig(
|
74
|
+
pkg = JSON.parse(File.read("package.json"))
|
75
|
+
build_script = pkg.dig("scripts", "build")
|
76
76
|
|
77
77
|
raise Errors::BuildScriptNotFoundError,
|
78
78
|
"Build script not found" if build_script.nil?
|
@@ -93,23 +93,23 @@ module Script
|
|
93
93
|
end
|
94
94
|
|
95
95
|
def check_if_ep_dependencies_up_to_date!
|
96
|
-
return true if ENV[
|
96
|
+
return true if ENV["SHOPIFY_CLI_SCRIPTS_IGNORE_OUTDATED"]
|
97
97
|
|
98
98
|
# ignore exit code since it will not be 0 unless every package is up to date which they probably won't be
|
99
99
|
out, _ = ctx.capture2e("npm", "outdated", "--json", "--depth", "0")
|
100
100
|
parsed_outdated_check = JSON.parse(out)
|
101
101
|
outdated_ep_packages = parsed_outdated_check
|
102
|
-
.select { |package_name, _| package_name.start_with?(
|
102
|
+
.select { |package_name, _| package_name.start_with?("@shopify/extension-point-as-") }
|
103
103
|
.select { |_, version_info| !package_is_up_to_date?(version_info) }
|
104
104
|
.keys
|
105
105
|
raise Errors::PackagesOutdatedError.new(outdated_ep_packages),
|
106
|
-
"NPM packages out of date: #{outdated_ep_packages.join(
|
106
|
+
"NPM packages out of date: #{outdated_ep_packages.join(", ")}" unless outdated_ep_packages.empty?
|
107
107
|
end
|
108
108
|
|
109
109
|
def package_is_up_to_date?(version_info)
|
110
|
-
require
|
111
|
-
current_version = version_info[
|
112
|
-
latest_version = version_info[
|
110
|
+
require "semantic/semantic"
|
111
|
+
current_version = version_info["current"]
|
112
|
+
latest_version = version_info["latest"]
|
113
113
|
|
114
114
|
# making an assumption that the script developer knows what they're doing if they're not referencing a
|
115
115
|
# semver version
|