shopify-cli 2.6.3 → 2.7.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/.devcontainer.json +5 -0
- data/.github/DESIGN.md +1 -1
- data/.github/ISSUE_TEMPLATE.md +7 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +15 -4
- data/.github/workflows/shopify.yml +3 -6
- data/.vscode/extensions.json +5 -0
- data/.vscode/settings.json +9 -0
- data/CHANGELOG.md +98 -104
- data/CONTRIBUTING.md +1 -21
- data/Codespace.dockerfile +35 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +9 -5
- data/README.md +20 -99
- data/RELEASING.md +17 -30
- data/Rakefile +0 -5
- data/Tests.dockerfile +35 -0
- data/assets/logo.png +0 -0
- data/dev.yml +0 -3
- data/docs/README.md +13 -0
- data/docs/contributors/testing.md +27 -0
- data/docs/users/installation.md +46 -0
- data/{THEMEKIT_MIGRATION.md → docs/users/migrate-from-themekit.md} +1 -1
- data/lib/project_types/extension/cli.rb +7 -3
- data/lib/project_types/extension/commands/create.rb +6 -6
- data/lib/project_types/extension/commands/extension_command.rb +1 -1
- data/lib/project_types/extension/features/argo.rb +9 -10
- data/lib/project_types/extension/features/argo_serve.rb +9 -23
- data/lib/project_types/extension/forms/create.rb +1 -1
- data/lib/project_types/extension/forms/questions/ask_template.rb +3 -6
- data/lib/project_types/extension/messages/messages.rb +1 -0
- data/lib/project_types/extension/models/development_server_requirements.rb +2 -3
- data/lib/project_types/extension/models/server_config/app.rb +13 -0
- data/lib/project_types/extension/models/server_config/development.rb +5 -4
- data/lib/project_types/extension/models/server_config/development_renderer.rb +1 -1
- data/lib/project_types/extension/models/server_config/development_resource.rb +13 -0
- data/lib/project_types/extension/models/server_config/extension.rb +4 -0
- data/lib/project_types/extension/models/server_config/root.rb +4 -1
- data/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +1 -1
- data/lib/project_types/extension/models/specification_handlers/checkout_ui_extension.rb +1 -1
- data/lib/project_types/extension/tasks/convert_server_config.rb +65 -0
- data/lib/project_types/extension/tasks/ensure_resource_url.rb +39 -0
- data/lib/project_types/extension/tasks/find_package_from_json.rb +37 -0
- data/lib/project_types/extension/tasks/merge_server_config.rb +32 -0
- data/lib/project_types/extension/tasks/run_extension_command.rb +10 -9
- data/lib/project_types/node/cli.rb +0 -16
- data/lib/project_types/node/forms/create.rb +5 -5
- data/lib/project_types/node/messages/messages.rb +2 -149
- data/lib/project_types/php/cli.rb +0 -11
- data/lib/project_types/php/forms/create.rb +5 -6
- data/lib/project_types/php/messages/messages.rb +2 -164
- data/lib/project_types/rails/cli.rb +0 -16
- data/lib/project_types/rails/commands/create.rb +46 -17
- data/lib/project_types/rails/forms/create.rb +5 -7
- data/lib/project_types/rails/messages/messages.rb +6 -154
- data/lib/project_types/script/cli.rb +1 -1
- data/lib/project_types/script/commands/create.rb +5 -6
- data/lib/project_types/script/commands/push.rb +1 -1
- data/lib/project_types/script/config/extension_points.yml +10 -0
- data/lib/project_types/script/errors.rb +0 -18
- data/lib/project_types/script/graphql/app_script_set.graphql +2 -0
- data/lib/project_types/script/layers/application/build_script.rb +2 -1
- data/lib/project_types/script/layers/application/create_script.rb +2 -2
- data/lib/project_types/script/layers/application/push_script.rb +15 -1
- data/lib/project_types/script/layers/domain/push_package.rb +5 -2
- data/lib/project_types/script/layers/domain/script_json.rb +1 -1
- data/lib/project_types/script/layers/infrastructure/api_clients/partners_proxy_api_client.rb +0 -4
- data/lib/project_types/script/layers/infrastructure/errors.rb +17 -2
- data/lib/project_types/script/layers/infrastructure/languages/assemblyscript_task_runner.rb +29 -13
- data/lib/project_types/script/layers/infrastructure/languages/typescript_task_runner.rb +29 -13
- data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +4 -2
- data/lib/project_types/script/layers/infrastructure/script_project_repository.rb +3 -4
- data/lib/project_types/script/layers/infrastructure/script_service.rb +7 -2
- data/lib/project_types/script/messages/messages.rb +9 -22
- data/lib/project_types/script/ui/error_handler.rb +16 -26
- data/lib/project_types/theme/cli.rb +1 -1
- data/lib/project_types/theme/commands/check.rb +1 -1
- data/lib/project_types/theme/commands/delete.rb +1 -1
- data/lib/project_types/theme/commands/init.rb +1 -1
- data/lib/project_types/theme/commands/language_server.rb +1 -1
- data/lib/project_types/theme/commands/package.rb +1 -1
- data/lib/project_types/theme/commands/publish.rb +1 -1
- data/lib/project_types/theme/commands/pull.rb +1 -1
- data/lib/project_types/theme/commands/push.rb +1 -1
- data/lib/project_types/theme/commands/serve.rb +10 -2
- data/lib/project_types/theme/messages/messages.rb +10 -0
- data/lib/shopify_cli/admin_api/populate_resource_command.rb +1 -1
- data/lib/shopify_cli/api.rb +7 -2
- data/lib/shopify_cli/app_type_detector.rb +36 -0
- data/lib/shopify_cli/command/app_sub_command.rb +10 -0
- data/lib/shopify_cli/command/project_command.rb +18 -0
- data/lib/shopify_cli/command/sub_command.rb +19 -0
- data/lib/shopify_cli/command.rb +13 -3
- data/lib/shopify_cli/command_options/command_serve_options.rb +43 -0
- data/lib/shopify_cli/command_options.rb +7 -0
- data/lib/shopify_cli/commands/app/connect.rb +22 -0
- data/lib/shopify_cli/commands/app/create/node.rb +38 -0
- data/lib/shopify_cli/commands/app/create/php.rb +36 -0
- data/lib/shopify_cli/commands/app/create/rails.rb +40 -0
- data/lib/shopify_cli/commands/app/create.rb +28 -0
- data/lib/shopify_cli/commands/app/deploy.rb +49 -0
- data/lib/shopify_cli/commands/app/open.rb +19 -0
- data/lib/shopify_cli/commands/app/serve.rb +49 -0
- data/lib/shopify_cli/commands/app/tunnel.rb +43 -0
- data/lib/shopify_cli/commands/app.rb +29 -0
- data/lib/shopify_cli/commands/config.rb +2 -2
- data/lib/shopify_cli/commands/login.rb +3 -3
- data/lib/shopify_cli/commands/reporting.rb +38 -0
- data/lib/shopify_cli/commands/switch.rb +1 -1
- data/lib/shopify_cli/commands.rb +2 -0
- data/lib/shopify_cli/constants.rb +11 -3
- data/lib/shopify_cli/core/monorail.rb +9 -20
- data/lib/shopify_cli/environment.rb +15 -1
- data/lib/shopify_cli/exception_reporter.rb +29 -16
- data/lib/shopify_cli/git.rb +12 -1
- data/lib/shopify_cli/github/issue_url_generator.rb +19 -0
- data/lib/shopify_cli/github.rb +5 -0
- data/lib/shopify_cli/messages/messages.rb +295 -22
- data/lib/shopify_cli/migrator/migration.rb +1 -1
- data/lib/shopify_cli/migrator/migrations/1631709766_noop.rb +1 -1
- data/lib/shopify_cli/migrator/migrations/1633691650_merge_reporting_configuration.rb +41 -0
- data/lib/shopify_cli/migrator.rb +9 -11
- data/lib/shopify_cli/project.rb +5 -1
- data/lib/shopify_cli/project_commands.rb +1 -1
- data/lib/shopify_cli/reporting_configuration_controller.rb +64 -0
- data/lib/shopify_cli/services/app/connect_service.rb +25 -0
- data/lib/shopify_cli/services/app/create/node_service.rb +153 -0
- data/lib/shopify_cli/services/app/create/php_service.rb +152 -0
- data/lib/shopify_cli/services/app/create/rails_service.rb +213 -0
- data/lib/shopify_cli/services/app/deploy/heroku/node_service.rb +101 -0
- data/lib/shopify_cli/services/app/deploy/heroku/php_service.rb +135 -0
- data/lib/shopify_cli/services/app/deploy/heroku/rails_service.rb +120 -0
- data/lib/shopify_cli/services/app/open_service.rb +19 -0
- data/lib/shopify_cli/services/app/serve/node_service.rb +42 -0
- data/lib/shopify_cli/services/app/serve/php_service.rb +46 -0
- data/lib/shopify_cli/services/app/serve/rails_service.rb +48 -0
- data/lib/shopify_cli/services/app/tunnel/auth_service.rb +21 -0
- data/lib/shopify_cli/services/app/tunnel/start_service.rb +20 -0
- data/lib/shopify_cli/services/app/tunnel/stop_service.rb +20 -0
- data/lib/shopify_cli/services/base_service.rb +13 -0
- data/lib/shopify_cli/services/reporting_service.rb +16 -0
- data/lib/shopify_cli/services.rb +37 -0
- data/lib/shopify_cli/theme/dev_server/local_assets.rb +1 -1
- data/lib/shopify_cli/theme/dev_server/watcher.rb +2 -2
- data/lib/shopify_cli/theme/dev_server.rb +9 -2
- data/lib/shopify_cli/version.rb +1 -1
- data/lib/shopify_cli.rb +5 -2
- data/shopify-cli.gemspec +2 -13
- data/shopify-dev +18 -0
- data/utilities/constants.rb +7 -0
- data/utilities/docker/container.rb +104 -0
- data/utilities/docker.rb +45 -3
- data/utilities/utilities.rb +1 -0
- metadata +63 -54
- data/Dockerfile +0 -17
- data/docs/_config.yml +0 -2
- data/docs/app/node/commands/index.md +0 -4
- data/docs/app/node/index.md +0 -4
- data/docs/app/rails/commands/index.md +0 -4
- data/docs/app/rails/index.md +0 -4
- data/docs/core/index.md +0 -4
- data/docs/getting-started/index.md +0 -4
- data/docs/getting-started/install/index.md +0 -4
- data/docs/getting-started/migrate/index.md +0 -4
- data/docs/getting-started/uninstall/index.md +0 -4
- data/docs/getting-started/upgrade/index.md +0 -4
- data/docs/help/start-app/index.md +0 -4
- data/docs/index.md +0 -4
- data/ext/shopify-cli/extconf.rb +0 -60
- data/install.sh +0 -7
- data/lib/project_types/extension/tasks/converters/server_config_converter.rb +0 -31
- data/lib/project_types/extension/tasks/load_server_config.rb +0 -23
- data/lib/project_types/node/commands/connect.rb +0 -21
- data/lib/project_types/node/commands/create.rb +0 -125
- data/lib/project_types/node/commands/deploy/heroku.rb +0 -96
- data/lib/project_types/node/commands/deploy.rb +0 -32
- data/lib/project_types/node/commands/generate.rb +0 -22
- data/lib/project_types/node/commands/open.rb +0 -18
- data/lib/project_types/node/commands/serve.rb +0 -54
- data/lib/project_types/node/commands/tunnel.rb +0 -41
- data/lib/project_types/php/commands/connect.rb +0 -19
- data/lib/project_types/php/commands/create.rb +0 -143
- data/lib/project_types/php/commands/deploy/heroku.rb +0 -129
- data/lib/project_types/php/commands/deploy.rb +0 -32
- data/lib/project_types/php/commands/open.rb +0 -16
- data/lib/project_types/php/commands/serve.rb +0 -51
- data/lib/project_types/php/commands/tunnel.rb +0 -37
- data/lib/project_types/rails/commands/connect.rb +0 -21
- data/lib/project_types/rails/commands/deploy/heroku.rb +0 -115
- data/lib/project_types/rails/commands/deploy.rb +0 -32
- data/lib/project_types/rails/commands/generate/webhook.rb +0 -42
- data/lib/project_types/rails/commands/generate.rb +0 -60
- data/lib/project_types/rails/commands/open.rb +0 -18
- data/lib/project_types/rails/commands/serve.rb +0 -52
- data/lib/project_types/rails/commands/tunnel.rb +0 -41
- data/lib/project_types/script/graphql/app_script_update_or_create.graphql +0 -0
- data/lib/shopify_cli/exception_reporter/permission_controller.rb +0 -54
- data/lib/shopify_cli/sub_command.rb +0 -17
- data/shopify.fish +0 -12
- data/shopify.sh +0 -11
|
@@ -16,7 +16,7 @@ module ShopifyCLI
|
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
shop = if options.flags[:shop]
|
|
19
|
-
Login.validate_shop(options.flags[:shop])
|
|
19
|
+
Login.validate_shop(options.flags[:shop], context: @ctx)
|
|
20
20
|
elsif (org_id = DB.get(:organization_id))
|
|
21
21
|
res = ShopifyCLI::Tasks::SelectOrgAndShop.call(@ctx, organization_id: org_id)
|
|
22
22
|
res[:shop_domain]
|
data/lib/shopify_cli/commands.rb
CHANGED
|
@@ -23,11 +23,13 @@ module ShopifyCLI
|
|
|
23
23
|
register :Login, "login", "shopify_cli/commands/login", true
|
|
24
24
|
register :Logout, "logout", "shopify_cli/commands/logout", true
|
|
25
25
|
register :Populate, "populate", "shopify_cli/commands/populate", true
|
|
26
|
+
register :Reporting, "reporting", "shopify_cli/commands/reporting", true
|
|
26
27
|
register :Store, "store", "shopify_cli/commands/store", true
|
|
27
28
|
register :Switch, "switch", "shopify_cli/commands/switch", true
|
|
28
29
|
register :System, "system", "shopify_cli/commands/system", true
|
|
29
30
|
register :Version, "version", "shopify_cli/commands/version", true
|
|
30
31
|
register :Whoami, "whoami", "shopify_cli/commands/whoami", true
|
|
32
|
+
register :App, "app", "shopify_cli/commands/app", true
|
|
31
33
|
|
|
32
34
|
autoload :Connect, "shopify_cli/commands/connect"
|
|
33
35
|
end
|
|
@@ -4,6 +4,10 @@ module ShopifyCLI
|
|
|
4
4
|
ROOT = File.expand_path("../..", __dir__)
|
|
5
5
|
end
|
|
6
6
|
|
|
7
|
+
module Files
|
|
8
|
+
SHOPIFY_CLI_YML = ".shopify-cli.yml"
|
|
9
|
+
end
|
|
10
|
+
|
|
7
11
|
module StoreKeys
|
|
8
12
|
LAST_MIGRATION_DATE = :last_migration_date
|
|
9
13
|
ANALYTICS_ENABLED = :analytics_enabled
|
|
@@ -15,10 +19,10 @@ module ShopifyCLI
|
|
|
15
19
|
|
|
16
20
|
module Config
|
|
17
21
|
module Sections
|
|
18
|
-
module
|
|
19
|
-
NAME = "
|
|
22
|
+
module Analytics
|
|
23
|
+
NAME = "analytics"
|
|
20
24
|
module Fields
|
|
21
|
-
|
|
25
|
+
ENABLED = "enabled"
|
|
22
26
|
end
|
|
23
27
|
end
|
|
24
28
|
end
|
|
@@ -39,7 +43,11 @@ module ShopifyCLI
|
|
|
39
43
|
|
|
40
44
|
# Environments
|
|
41
45
|
TEST = "SHOPIFY_CLI_TEST"
|
|
46
|
+
ACCEPTANCE_TEST = "SHOPIFY_CLI_ACCEPTANCE_TEST"
|
|
42
47
|
DEVELOPMENT = "SHOPIFY_CLI_DEVELOPMENT"
|
|
48
|
+
|
|
49
|
+
# Monorail
|
|
50
|
+
MONORAIL_REAL_EVENTS = "MONORAIL_REAL_EVENTS"
|
|
43
51
|
end
|
|
44
52
|
|
|
45
53
|
module Identity
|
|
@@ -16,9 +16,6 @@ module ShopifyCLI
|
|
|
16
16
|
attr_accessor :metadata
|
|
17
17
|
|
|
18
18
|
def log(name, args, &block) # rubocop:disable Lint/UnusedMethodArgument
|
|
19
|
-
prompt_for_consent
|
|
20
|
-
return yield unless enabled? && consented?
|
|
21
|
-
|
|
22
19
|
command, command_name = Commands::Registry.lookup_command(name)
|
|
23
20
|
final_command = [command_name]
|
|
24
21
|
if command
|
|
@@ -28,13 +25,18 @@ module ShopifyCLI
|
|
|
28
25
|
|
|
29
26
|
start_time = now_in_milliseconds
|
|
30
27
|
err = nil
|
|
28
|
+
|
|
31
29
|
begin
|
|
32
30
|
yield
|
|
33
31
|
rescue Exception => e # rubocop:disable Lint/RescueException
|
|
34
32
|
err = e
|
|
35
33
|
raise
|
|
36
34
|
ensure
|
|
37
|
-
|
|
35
|
+
# If there's an error, we don't prompt from here and we let the exception
|
|
36
|
+
# reporter do that.
|
|
37
|
+
if report?(prompt: err.nil?)
|
|
38
|
+
send_event(start_time, final_command, args - final_command, err&.message)
|
|
39
|
+
end
|
|
38
40
|
end
|
|
39
41
|
end
|
|
40
42
|
|
|
@@ -44,22 +46,9 @@ module ShopifyCLI
|
|
|
44
46
|
(Time.now.utc.to_f * 1000).to_i
|
|
45
47
|
end
|
|
46
48
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
(
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def consented?
|
|
53
|
-
ShopifyCLI::Config.get_bool("analytics", "enabled")
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def prompt_for_consent
|
|
57
|
-
return if Context.new.ci?
|
|
58
|
-
return unless enabled?
|
|
59
|
-
return if ShopifyCLI::Config.get_section("analytics").key?("enabled")
|
|
60
|
-
msg = Context.message("core.monorail.consent_prompt")
|
|
61
|
-
opt = CLI::UI::Prompt.confirm(msg)
|
|
62
|
-
ShopifyCLI::Config.set("analytics", "enabled", opt)
|
|
49
|
+
def report?(prompt:)
|
|
50
|
+
return true if Environment.send_monorail_events?
|
|
51
|
+
ReportingConfigurationController.check_or_prompt_report_automatically(source: :usage, prompt: prompt)
|
|
63
52
|
end
|
|
64
53
|
|
|
65
54
|
def send_event(start_time, commands, args, err = nil)
|
|
@@ -26,7 +26,7 @@ module ShopifyCLI
|
|
|
26
26
|
env_variable_truthy?(
|
|
27
27
|
Constants::EnvironmentVariables::STACKTRACE,
|
|
28
28
|
env_variables: env_variables
|
|
29
|
-
)
|
|
29
|
+
) || development?(env_variables: env_variables)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def self.test?(env_variables: ENV)
|
|
@@ -36,6 +36,13 @@ module ShopifyCLI
|
|
|
36
36
|
)
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
+
def self.acceptance_test?(env_variables: ENV)
|
|
40
|
+
env_variable_truthy?(
|
|
41
|
+
Constants::EnvironmentVariables::ACCEPTANCE_TEST,
|
|
42
|
+
env_variables: env_variables
|
|
43
|
+
)
|
|
44
|
+
end
|
|
45
|
+
|
|
39
46
|
def self.print_backtrace?(env_variables: ENV)
|
|
40
47
|
env_variable_truthy?(
|
|
41
48
|
Constants::EnvironmentVariables::BACKTRACE,
|
|
@@ -72,6 +79,13 @@ module ShopifyCLI
|
|
|
72
79
|
"#{spin_workspace}.#{spin_namespace}.#{spin_host}"
|
|
73
80
|
end
|
|
74
81
|
|
|
82
|
+
def self.send_monorail_events?(env_variables: ENV)
|
|
83
|
+
env_variable_truthy?(
|
|
84
|
+
Constants::EnvironmentVariables::MONORAIL_REAL_EVENTS,
|
|
85
|
+
env_variables: env_variables
|
|
86
|
+
)
|
|
87
|
+
end
|
|
88
|
+
|
|
75
89
|
def self.env_variable_truthy?(variable_name, env_variables: ENV)
|
|
76
90
|
TRUTHY_ENV_VARIABLE_VALUES.include?(env_variables[variable_name.to_s])
|
|
77
91
|
end
|
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
module ShopifyCLI
|
|
2
2
|
module ExceptionReporter
|
|
3
|
-
autoload :PermissionController, "shopify_cli/exception_reporter/permission_controller"
|
|
4
|
-
|
|
5
3
|
def self.report(error, _logs = nil, _api_key = nil, custom_metadata = {})
|
|
6
4
|
context = ShopifyCLI::Context.new
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
unless ShopifyCLI::Environment.development?
|
|
6
|
+
context.puts(context.message("core.error_reporting.unhandled_error.message"))
|
|
7
|
+
context.puts(context.message("core.error_reporting.unhandled_error.issue_message",
|
|
8
|
+
ShopifyCLI::GitHub::IssueURLGenerator.error_url(error)))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Stack trace hint
|
|
10
12
|
unless ShopifyCLI::Environment.print_stacktrace?
|
|
11
13
|
context.puts(context.message("core.error_reporting.unhandled_error.stacktrace_message",
|
|
12
14
|
"#{ShopifyCLI::Constants::EnvironmentVariables::STACKTRACE}=1"))
|
|
13
15
|
end
|
|
16
|
+
|
|
14
17
|
context.puts("\n")
|
|
15
18
|
|
|
16
19
|
return unless reportable_error?(error)
|
|
17
|
-
return unless report?
|
|
18
20
|
|
|
21
|
+
return unless report?(context: context)
|
|
19
22
|
ENV["BUGSNAG_DISABLE_AUTOCONFIGURE"] = "1"
|
|
20
23
|
require "bugsnag"
|
|
21
24
|
|
|
@@ -28,25 +31,35 @@ module ShopifyCLI
|
|
|
28
31
|
config.auto_capture_sessions = false
|
|
29
32
|
end
|
|
30
33
|
|
|
31
|
-
metadata = {}
|
|
34
|
+
metadata = { rubyPlatform: RUBY_PLATFORM }
|
|
32
35
|
metadata.merge!(custom_metadata)
|
|
33
|
-
|
|
36
|
+
|
|
37
|
+
Bugsnag.notify(error) do |event|
|
|
38
|
+
event.add_metadata(:device, metadata)
|
|
39
|
+
end
|
|
34
40
|
end
|
|
35
41
|
|
|
36
|
-
def self.report?
|
|
37
|
-
return
|
|
38
|
-
|
|
39
|
-
ExceptionReporter::PermissionController.can_report_automatically?
|
|
42
|
+
def self.report?(context:)
|
|
43
|
+
return true if ReportingConfigurationController.reporting_prompted? &&
|
|
44
|
+
ReportingConfigurationController.check_or_prompt_report_automatically(source: :uncaught_error)
|
|
40
45
|
|
|
41
|
-
report_error =
|
|
46
|
+
report_error = report_error?(context: context)
|
|
42
47
|
|
|
43
|
-
unless
|
|
44
|
-
|
|
48
|
+
unless ReportingConfigurationController.reporting_prompted?
|
|
49
|
+
ReportingConfigurationController.check_or_prompt_report_automatically(source: :uncaught_error)
|
|
45
50
|
end
|
|
46
|
-
|
|
47
51
|
report_error
|
|
48
52
|
end
|
|
49
53
|
|
|
54
|
+
def self.report_error?(context:)
|
|
55
|
+
return false if Environment.development?
|
|
56
|
+
|
|
57
|
+
CLI::UI::Prompt.ask(context.message("core.error_reporting.report_error.question")) do |handler|
|
|
58
|
+
handler.option(context.message("core.error_reporting.report_error.yes")) { |_| true }
|
|
59
|
+
handler.option(context.message("core.error_reporting.report_error.no")) { |_| false }
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
50
63
|
def self.reportable_error?(error)
|
|
51
64
|
is_abort = error.is_a?(ShopifyCLI::Abort) || error.is_a?(ShopifyCLI::AbortSilent)
|
|
52
65
|
!is_abort
|
data/lib/shopify_cli/git.rb
CHANGED
|
@@ -4,6 +4,12 @@ module ShopifyCLI
|
|
|
4
4
|
# git.
|
|
5
5
|
class Git
|
|
6
6
|
class << self
|
|
7
|
+
# Check if Git is available in the environment
|
|
8
|
+
def available?(ctx)
|
|
9
|
+
_output, status = ctx.capture2e("git", "status")
|
|
10
|
+
status.success?
|
|
11
|
+
end
|
|
12
|
+
|
|
7
13
|
##
|
|
8
14
|
# will return the current sha of the cli repo
|
|
9
15
|
#
|
|
@@ -20,8 +26,13 @@ module ShopifyCLI
|
|
|
20
26
|
#
|
|
21
27
|
# ShopifyCLI::Git.sha
|
|
22
28
|
#
|
|
29
|
+
# Some environments don't have git in PATH and this prevents
|
|
30
|
+
# the execution from raising an error
|
|
31
|
+
# https://app.bugsnag.com/shopify/shopify-cli/errors/615dd36365ce57000889d4c5
|
|
23
32
|
def sha(dir: Dir.pwd, ctx: Context.new)
|
|
24
|
-
|
|
33
|
+
if available?(ctx)
|
|
34
|
+
rev_parse("HEAD", dir: dir, ctx: ctx)
|
|
35
|
+
end
|
|
25
36
|
end
|
|
26
37
|
|
|
27
38
|
##
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module ShopifyCLI
|
|
2
|
+
module GitHub
|
|
3
|
+
module IssueURLGenerator
|
|
4
|
+
def self.error_url(error)
|
|
5
|
+
title = "#{error.class}: #{error.message}"
|
|
6
|
+
labels = "type:bug"
|
|
7
|
+
content = File.read(File.join(ShopifyCLI::ROOT, ".github/ISSUE_TEMPLATE.md"))
|
|
8
|
+
|
|
9
|
+
# take at most 5 lines from backtrace
|
|
10
|
+
stacktrace = error.backtrace.length < 5 ? error.backtrace : error.backtrace[0..4]
|
|
11
|
+
body = stacktrace.join("\n").to_s
|
|
12
|
+
output = content.gsub(/<!--Stacktrace(.|\n)*-->/, body)
|
|
13
|
+
query = URI.encode_www_form({ title: title, body: output, labels: labels })
|
|
14
|
+
url = "#{ShopifyCLI::Constants::Links::NEW_ISSUE}?#{query}"
|
|
15
|
+
url
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -8,29 +8,294 @@ module ShopifyCLI
|
|
|
8
8
|
info: {
|
|
9
9
|
created: "{{v}} {{green:%s}} was created in the organization's Partner Dashboard {{underline:%s}}",
|
|
10
10
|
serve: "{{*}} Change directories to your new project folder {{green:%s}} and run "\
|
|
11
|
-
"{{command:%s
|
|
11
|
+
"{{command:%s app serve}} to start a local server",
|
|
12
12
|
install: "{{*}} Then, visit {{underline:%s/test}} to install {{green:%s}} on your Dev Store",
|
|
13
13
|
},
|
|
14
14
|
},
|
|
15
15
|
},
|
|
16
16
|
core: {
|
|
17
|
+
app: {
|
|
18
|
+
help: <<~HELP,
|
|
19
|
+
Suite of commands for developing apps. See {{command:%1$s app <command> --help}} for usage of each command.
|
|
20
|
+
Usage: {{command:%1$s app [ %2$s ]}}
|
|
21
|
+
HELP
|
|
22
|
+
error: {
|
|
23
|
+
type_not_found: <<~MESSAGE,
|
|
24
|
+
Couldn't detect the app type in directory %s. We currently support Rails, PHP, and NodeJS apps.
|
|
25
|
+
MESSAGE
|
|
26
|
+
missing_shopify_cli_yml: <<~MESSAGE,
|
|
27
|
+
Couldn't find a #{Constants::Files::SHOPIFY_CLI_YML} file in the directory %s to determine the app type.
|
|
28
|
+
MESSAGE
|
|
29
|
+
invalid_project_type: <<~MESSAGE,
|
|
30
|
+
The project type %s doesn't represent an app.
|
|
31
|
+
MESSAGE
|
|
32
|
+
},
|
|
33
|
+
create: {
|
|
34
|
+
type_required_error: "",
|
|
35
|
+
invalid_type: "The type %s is not supported. The only supported types are"\
|
|
36
|
+
" {{command:[ rails | node | php ]}}",
|
|
37
|
+
help: <<~HELP,
|
|
38
|
+
{{command:%s app create}}: Creates a ruby on rails app.
|
|
39
|
+
Usage: {{command:%s app create [ rails | node | php ]}}
|
|
40
|
+
HELP
|
|
41
|
+
rails: {
|
|
42
|
+
help: <<~HELP,
|
|
43
|
+
{{command:%s app create rails}}: Creates a ruby on rails app.
|
|
44
|
+
Usage: {{command:%s app create rails}}
|
|
45
|
+
Options:
|
|
46
|
+
{{command:--name=NAME}} App name. Any string.
|
|
47
|
+
{{command:--organization-id=ID}} Partner organization ID. Must be an existing organization.
|
|
48
|
+
{{command:--store-domain=MYSHOPIFYDOMAIN }} Development store URL. Must be an existing development store.
|
|
49
|
+
{{command:--db=DB}} Database type. Must be one of: mysql, postgresql, sqlite3, oracle, frontbase, ibm_db, sqlserver, jdbcmysql, jdbcsqlite3, jdbcpostgresql, jdbc.
|
|
50
|
+
{{command:--rails-opts=RAILSOPTS}} Additional options. Must be string containing one or more valid Rails options, separated by spaces.
|
|
51
|
+
HELP
|
|
52
|
+
|
|
53
|
+
error: {
|
|
54
|
+
invalid_ruby_version: "This project requires a Ruby version ~> 2.5 or Ruby 3.0.",
|
|
55
|
+
dir_exists: "Project directory %s already exists. Please use a different name.",
|
|
56
|
+
install_failure: "Error installing %s gem",
|
|
57
|
+
node_required: "node is required to create a rails project. Download at https://nodejs.org/en/download.",
|
|
58
|
+
node_version_failure: "Failed to get the current node version. Please make sure it is installed as " \
|
|
59
|
+
"per the instructions at https://nodejs.org/en.",
|
|
60
|
+
yarn_required: "yarn is required to create a rails project. Download at " \
|
|
61
|
+
"https://classic.yarnpkg.com/en/docs/install.",
|
|
62
|
+
yarn_version_failure: "Failed to get the current yarn version. Please make sure it is " \
|
|
63
|
+
"installed as per the instructions at https://classic.yarnpkg.com/en/docs/install.",
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
info: {
|
|
67
|
+
open_new_shell: "{{*}} {{yellow:After installing %s, please open a new Command Prompt or PowerShell " \
|
|
68
|
+
"window to continue.}}",
|
|
69
|
+
},
|
|
70
|
+
installing_bundler: "Installing bundler…",
|
|
71
|
+
generating_app: "Generating new rails app project in %s…",
|
|
72
|
+
adding_shopify_gem: "{{v}} Adding shopify_app gem…",
|
|
73
|
+
node_version: "node %s",
|
|
74
|
+
yarn_version: "yarn %s",
|
|
75
|
+
running_bundle_install: "Running bundle install…",
|
|
76
|
+
running_generator: "Running shopify_app generator…",
|
|
77
|
+
running_migrations: "Running migrations…",
|
|
78
|
+
running_webpacker_install: "Running webpacker:install…",
|
|
79
|
+
},
|
|
80
|
+
node: {
|
|
81
|
+
help: <<~HELP,
|
|
82
|
+
{{command:%s app create node}}: Creates an embedded nodejs app.
|
|
83
|
+
Usage: {{command:%s app create node}}
|
|
84
|
+
Options:
|
|
85
|
+
{{command:--name=NAME}} App name. Any string.
|
|
86
|
+
{{command:--organization-id=ID}} Partner organization ID. Must be an existing organization.
|
|
87
|
+
{{command:--store-domain=MYSHOPIFYDOMAIN }} Development store URL. Must be an existing development store.
|
|
88
|
+
HELP
|
|
89
|
+
error: {
|
|
90
|
+
node_required: "node is required to create an app project. Download at https://nodejs.org/en/download.",
|
|
91
|
+
node_version_failure: "Failed to get the current node version. Please make sure it is installed as " \
|
|
92
|
+
"per the instructions at https://nodejs.org/en.",
|
|
93
|
+
npm_required: "npm is required to create an app project. Download at https://www.npmjs.com/get-npm.",
|
|
94
|
+
npm_version_failure: "Failed to get the current npm version. Please make sure it is installed as per " \
|
|
95
|
+
"the instructions at https://www.npmjs.com/get-npm.",
|
|
96
|
+
},
|
|
97
|
+
node_version: "node %s",
|
|
98
|
+
npm_version: "npm %s",
|
|
99
|
+
},
|
|
100
|
+
php: {
|
|
101
|
+
help: <<~HELP,
|
|
102
|
+
{{command:%s app create php}}: Creates an embedded PHP app.
|
|
103
|
+
Usage: {{command:%s app create php}}
|
|
104
|
+
Options:
|
|
105
|
+
{{command:--name=NAME}} App name. Any string.
|
|
106
|
+
{{command:--organization-id=ID}} Partner organization ID. Must be an existing organization.
|
|
107
|
+
{{command:--store-domain=MYSHOPIFYDOMAIN}} Development store URL. Must be an existing development store.
|
|
108
|
+
{{command:--type=APPTYPE}} Whether this app is public or custom.
|
|
109
|
+
{{command:--verbose}} Output verbose information when installing dependencies.
|
|
110
|
+
HELP
|
|
111
|
+
|
|
112
|
+
error: {
|
|
113
|
+
php_required: <<~VERSION,
|
|
114
|
+
PHP is required to create an app project. For installation instructions, visit:
|
|
115
|
+
{{underline:https://www.php.net/manual/en/install.php}}
|
|
116
|
+
VERSION
|
|
117
|
+
php_version_failure: <<~VERSION,
|
|
118
|
+
Failed to get the current PHP version. Please make sure it is installed as per the instructions at:
|
|
119
|
+
{{underline:https://www.php.net/manual/en/install.php.}}
|
|
120
|
+
VERSION
|
|
121
|
+
php_version_too_low: "Your PHP version is too low. Please use version %s or higher.",
|
|
122
|
+
composer_required: <<~COMPOSER,
|
|
123
|
+
Composer is required to create an app project. Download at:
|
|
124
|
+
{{underline:https://getcomposer.org/download/}}
|
|
125
|
+
COMPOSER
|
|
126
|
+
npm_required: "npm is required to create an app project. Download at https://www.npmjs.com/get-npm.",
|
|
127
|
+
npm_version_failure: "Failed to get the current npm version. Please make sure it is installed as per " \
|
|
128
|
+
"the instructions at https://www.npmjs.com/get-npm.",
|
|
129
|
+
app_setup: "Failed to set up the app",
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
php_version: "PHP %s",
|
|
133
|
+
npm_version: "npm %s",
|
|
134
|
+
app_setting_up: "Setting up app…",
|
|
135
|
+
app_set_up: "App is now set up",
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
deploy: {
|
|
139
|
+
help: <<~HELP,
|
|
140
|
+
Deploy the current app to a hosting service. Heroku ({{underline:https://www.heroku.com}}) is currently the only option, but more will be added in the future.
|
|
141
|
+
Usage: {{command:%s app deploy [ heroku ]}}
|
|
142
|
+
HELP
|
|
143
|
+
extended_help: <<~HELP,
|
|
144
|
+
{{bold:Subcommands:}}
|
|
145
|
+
{{cyan:heroku}}: Deploys the current app to Heroku.
|
|
146
|
+
Usage: {{command:%s app deploy heroku}}
|
|
147
|
+
HELP
|
|
148
|
+
error: {
|
|
149
|
+
missing_platform: <<~MESSAGE,
|
|
150
|
+
The platform argument is missing.
|
|
151
|
+
Usage: {{command:%s app deploy [ heroku ]}}
|
|
152
|
+
MESSAGE
|
|
153
|
+
invalid_platform: <<~MESSAGE,
|
|
154
|
+
The platform argument passed {{command:%s}} is not supported.
|
|
155
|
+
Usage: {{command:%s app deploy [ heroku ]}}
|
|
156
|
+
MESSAGE
|
|
157
|
+
},
|
|
158
|
+
heroku: {
|
|
159
|
+
downloading: "Downloading Heroku CLI…",
|
|
160
|
+
downloaded: "Downloaded Heroku CLI",
|
|
161
|
+
installing: "Installing Heroku CLI…",
|
|
162
|
+
installing_windows: "Running Heroku CLI install wizard…",
|
|
163
|
+
installed: "Installed Heroku CLI",
|
|
164
|
+
authenticated_with_account: "{{v}} Authenticated with Heroku as {{green:%s}}",
|
|
165
|
+
authenticating: "Authenticating with Heroku…",
|
|
166
|
+
authenticated: "{{v}} Authenticated with Heroku",
|
|
167
|
+
deploying: "Deploying to Heroku…",
|
|
168
|
+
deployed: "{{v}} Deployed to Heroku",
|
|
169
|
+
php: {
|
|
170
|
+
post_deploy: <<~DEPLOYED,
|
|
171
|
+
{{v}} Deployed to Heroku, you can access your app at {{green:%s}}
|
|
172
|
+
|
|
173
|
+
If you're deploying this app for the first time, make sure to set up your database and your app's environment at {{bold:App dashboard -> Settings -> Config Vars}}.
|
|
174
|
+
|
|
175
|
+
When setting your config vars, don't forget to set up your database and the appropriate Laravel values for it, particularly {{bold:DB_CONNECTION and DB_DATABASE}}.
|
|
176
|
+
DEPLOYED
|
|
177
|
+
error: {
|
|
178
|
+
generate_app_key: "Failed to generate Laravel APP_KEY",
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
rails: {
|
|
182
|
+
db_check: {
|
|
183
|
+
validating: "Validating application…",
|
|
184
|
+
checking: "Checking database type…",
|
|
185
|
+
validated: "Database type \"%s\" validated for platform \"Heroku\"",
|
|
186
|
+
problem: "A problem was encountered while checking your database type.",
|
|
187
|
+
sqlite: <<~SQLITE,
|
|
188
|
+
Heroku does not support deployment using the SQLite database system.
|
|
189
|
+
Change the database type using {{command:rails db:system:change --to=[new_db_type]}}. For more info:
|
|
190
|
+
{{underline:https://gorails.com/episodes/rails-6-db-system-change-command}}
|
|
191
|
+
SQLITE
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
git: {
|
|
195
|
+
checking: "Checking git repo…",
|
|
196
|
+
initialized: "Git repo initialized",
|
|
197
|
+
what_branch: "What branch would you like to deploy?",
|
|
198
|
+
branch_selected: "{{v}} Git branch {{green:%s}} selected for deploy",
|
|
199
|
+
},
|
|
200
|
+
app: {
|
|
201
|
+
no_apps_found: "No existing Heroku app found. What would you like to do?",
|
|
202
|
+
name: "What is your Heroku app’s name?",
|
|
203
|
+
select: "Specify an existing Heroku app",
|
|
204
|
+
selecting: "Selecting Heroku app %s…",
|
|
205
|
+
selected: "{{v}} Heroku app {{green:%s}} selected",
|
|
206
|
+
create: "Create a new Heroku app",
|
|
207
|
+
creating: "Creating new Heroku app…",
|
|
208
|
+
created: "{{v}} New Heroku app created",
|
|
209
|
+
setting_configs: "Setting Shopify app configs…",
|
|
210
|
+
configs_set: "{{v}} Shopify app configs set",
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
connect: {
|
|
215
|
+
help: <<~HELP,
|
|
216
|
+
{{command:%s app connect}}: Connects an existing app to Shopify CLI. Creates a config file.
|
|
217
|
+
Usage: {{command:%s app connect}}
|
|
218
|
+
HELP
|
|
219
|
+
connected: "Project now connected to {{green:%s}}",
|
|
220
|
+
production_warning: <<~MESSAGE,
|
|
221
|
+
{{yellow:! Warning: if you have connected to an {{bold:app in production}}, running {{command:serve}} may update the app URL and cause an outage.
|
|
222
|
+
MESSAGE
|
|
223
|
+
},
|
|
224
|
+
tunnel: {
|
|
225
|
+
help: <<~HELP,
|
|
226
|
+
Start or stop an http tunnel to your local development app using ngrok.
|
|
227
|
+
Usage: {{command:%s app tunnel [ auth | start | stop ]}}
|
|
228
|
+
HELP
|
|
229
|
+
extended_help: <<~HELP,
|
|
230
|
+
{{bold:Subcommands:}}
|
|
231
|
+
|
|
232
|
+
{{cyan:auth}}: Writes an ngrok auth token to ~/.ngrok2/ngrok.yml to connect with an ngrok account. Visit https://dashboard.ngrok.com/signup to sign up.
|
|
233
|
+
Usage: {{command:%1$s app tunnel auth <token>}}
|
|
234
|
+
|
|
235
|
+
{{cyan:start}}: Starts an ngrok tunnel, will print the URL for an existing tunnel if already running.
|
|
236
|
+
Usage: {{command:%1$s app tunnel start}}
|
|
237
|
+
|
|
238
|
+
{{cyan:stop}}: Stops the ngrok tunnel.
|
|
239
|
+
Usage: {{command:%1$s app tunnel stop}}
|
|
240
|
+
|
|
241
|
+
HELP
|
|
242
|
+
error: {
|
|
243
|
+
token_argument_missing: "{{x}} {{red:auth requires a token argument}}\n\n",
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
serve: {
|
|
247
|
+
help: <<~HELP,
|
|
248
|
+
Start a local development server for your project, as well as a public ngrok tunnel to your localhost.
|
|
249
|
+
Usage: {{command:%s app serve}}
|
|
250
|
+
HELP
|
|
251
|
+
extended_help: <<~HELP,
|
|
252
|
+
{{bold:Options:}}
|
|
253
|
+
{{cyan:--host=HOST}}: Bypass running tunnel and use custom host. HOST must be HTTPS url.
|
|
254
|
+
{{cyan:--port=PORT}}: Use custom port.
|
|
255
|
+
HELP
|
|
256
|
+
open_info: <<~MESSAGE,
|
|
257
|
+
{{*}} To install and start using your app, open this URL in your browser:
|
|
258
|
+
{{green:%s}}
|
|
259
|
+
MESSAGE
|
|
260
|
+
running_server: "Running server…",
|
|
261
|
+
error: {
|
|
262
|
+
host_must_be_https: "HOST must be a HTTPS url.",
|
|
263
|
+
invalid_port: "%s is not a valid port.",
|
|
264
|
+
},
|
|
265
|
+
},
|
|
266
|
+
open: {
|
|
267
|
+
help: <<~HELP,
|
|
268
|
+
Open your local development app in the default browser.
|
|
269
|
+
Usage: {{command:%s app open}}
|
|
270
|
+
HELP
|
|
271
|
+
},
|
|
272
|
+
},
|
|
17
273
|
error_reporting: {
|
|
18
274
|
unhandled_error: {
|
|
19
275
|
message: "{{x}} {{red:An unexpected error occured.}}",
|
|
20
|
-
issue_message: "{{red:\tTo \e]8
|
|
276
|
+
issue_message: "{{red:\tTo \e]8;;%s\e\\submit an issue\e]8;;\e\\"\
|
|
21
277
|
" include the stack trace.}}",
|
|
22
278
|
stacktrace_message: "{{red:\tTo print the stack trace, add the environment variable %s.}}",
|
|
23
279
|
},
|
|
24
|
-
enable_automatic_reporting_prompt: {
|
|
25
|
-
question: "Automatically send error reports moving forward?",
|
|
26
|
-
yes: "Automatically send error reports to the Shopify team",
|
|
27
|
-
no: "Don't send error reports",
|
|
28
|
-
enabled: "Anonymized error reports will be sent to Shopify.",
|
|
29
|
-
},
|
|
30
280
|
report_error: {
|
|
31
|
-
question: "Send an error report to Shopify?",
|
|
32
|
-
yes: "
|
|
33
|
-
no: "
|
|
281
|
+
question: "Send an anonymized error report to Shopify?",
|
|
282
|
+
yes: "Yes, send",
|
|
283
|
+
no: "No, don't send",
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
analytics: {
|
|
287
|
+
enable_prompt: {
|
|
288
|
+
uncaught_error: {
|
|
289
|
+
question: "Automatically send reports from now on?",
|
|
290
|
+
yes: "Yes, automatically send anonymized reports to Shopify",
|
|
291
|
+
no: "No, don't send",
|
|
292
|
+
},
|
|
293
|
+
usage: {
|
|
294
|
+
question: "Automatically send anonymized usage and error reports to Shopify? We use these"\
|
|
295
|
+
" to make development on Shopify better.",
|
|
296
|
+
yes: "Yes, automatically send anonymized reports to Shopify",
|
|
297
|
+
no: "No, don't send",
|
|
298
|
+
},
|
|
34
299
|
},
|
|
35
300
|
},
|
|
36
301
|
connect: {
|
|
@@ -168,15 +433,6 @@ module ShopifyCLI
|
|
|
168
433
|
disabled_as_shopify_org: "Can't switch development stores logged in as {{green:Shopify partners org}}",
|
|
169
434
|
success: "Switched development store to {{green:%s}}",
|
|
170
435
|
},
|
|
171
|
-
|
|
172
|
-
monorail: {
|
|
173
|
-
consent_prompt: <<~MSG,
|
|
174
|
-
Would you like to enable anonymous usage reporting?
|
|
175
|
-
If you select “Yes”, we’ll collect data about which commands you use and which errors you encounter.
|
|
176
|
-
Sharing this anonymous data helps Shopify improve this tool.
|
|
177
|
-
MSG
|
|
178
|
-
},
|
|
179
|
-
|
|
180
436
|
identity_auth: {
|
|
181
437
|
error: {
|
|
182
438
|
timeout: "Timed out while waiting for response from Shopify",
|
|
@@ -316,7 +572,7 @@ module ShopifyCLI
|
|
|
316
572
|
error: {
|
|
317
573
|
not_in_project: <<~MESSAGE,
|
|
318
574
|
{{x}} You are not in a Shopify app project
|
|
319
|
-
{{yellow:{{*}}}}{{reset: Run}}{{cyan: shopify
|
|
575
|
+
{{yellow:{{*}}}}{{reset: Run}}{{cyan: shopify app create}}{{reset: to create your app}}
|
|
320
576
|
MESSAGE
|
|
321
577
|
},
|
|
322
578
|
},
|
|
@@ -493,7 +749,24 @@ module ShopifyCLI
|
|
|
493
749
|
|
|
494
750
|
MESSAGE
|
|
495
751
|
},
|
|
496
|
-
|
|
752
|
+
reporting: {
|
|
753
|
+
help: <<~HELP,
|
|
754
|
+
Turns anonymous reporting on or off.
|
|
755
|
+
Usage: {{command:%s reporting on}}
|
|
756
|
+
HELP
|
|
757
|
+
invalid_argument: <<~MESSAGE,
|
|
758
|
+
{{command:%s reporting %s}} is not supported. The valid values are {{command:on}} or {{command:off}}
|
|
759
|
+
MESSAGE
|
|
760
|
+
missing_argument: <<~MESSAGE,
|
|
761
|
+
{{command:%s reporting}} expects an argument {{command:on}} or {{command:off}}
|
|
762
|
+
MESSAGE
|
|
763
|
+
turned_on_message: <<~MESSAGE,
|
|
764
|
+
Anonymized reports will be sent to Shopify.
|
|
765
|
+
MESSAGE
|
|
766
|
+
turned_off_message: <<~MESSAGE,
|
|
767
|
+
Turn on automatic reporting later wtih {{command:%s reporting on}}.
|
|
768
|
+
MESSAGE
|
|
769
|
+
},
|
|
497
770
|
whoami: {
|
|
498
771
|
help: <<~HELP,
|
|
499
772
|
Identifies which partner organization or store you are currently logged into.
|