shopify-cli 1.5.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/.github/PULL_REQUEST_TEMPLATE.md +1 -0
- data/.rubocop_todo.yml +15 -2
- data/.travis.yml +1 -0
- data/CHANGELOG.md +26 -0
- data/Gemfile +12 -12
- data/Gemfile.lock +14 -14
- data/README.md +39 -7
- data/Rakefile +32 -28
- data/bin/load_shopify.rb +6 -6
- data/bin/shopify +2 -2
- data/dev.yml +5 -2
- data/docs/_config.yml +1 -18
- data/docs/app/node/commands/index.md +2 -80
- data/docs/app/node/index.md +2 -33
- data/docs/app/rails/commands/index.md +2 -78
- data/docs/app/rails/index.md +2 -34
- data/docs/core/index.md +2 -84
- data/docs/getting-started/index.md +2 -25
- data/docs/getting-started/install/index.md +1 -118
- data/docs/getting-started/migrate/index.md +2 -94
- data/docs/getting-started/uninstall/index.md +2 -35
- data/docs/getting-started/upgrade/index.md +2 -39
- data/docs/help/start-app/index.md +2 -4
- data/docs/index.md +2 -24
- data/ext/shopify-cli/extconf.rb +7 -7
- data/install.sh +1 -1
- data/lib/docgen/markdown.rb +12 -12
- data/lib/graphql/extension_create.graphql +17 -2
- data/lib/graphql/fetch_specifications.graphql +14 -0
- data/lib/{project_types/extension/graphql → graphql}/get_app_by_api_key.graphql +0 -0
- data/lib/project_types/extension/cli.rb +56 -48
- data/lib/project_types/extension/commands/build.rb +3 -3
- data/lib/project_types/extension/commands/create.rb +17 -10
- data/lib/project_types/extension/commands/extension_command.rb +14 -7
- data/lib/project_types/extension/commands/push.rb +10 -10
- data/lib/project_types/extension/commands/register.rb +22 -32
- data/lib/project_types/extension/commands/serve.rb +1 -7
- data/lib/project_types/extension/commands/tunnel.rb +12 -12
- data/lib/project_types/extension/extension_project.rb +22 -7
- data/lib/project_types/extension/extension_project_keys.rb +5 -4
- data/lib/project_types/extension/features/argo.rb +123 -0
- 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_renderer_package.rb +32 -0
- data/lib/project_types/extension/features/argo_serve.rb +69 -0
- 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 +47 -0
- data/lib/project_types/extension/messages/message_loading.rb +3 -1
- data/lib/project_types/extension/messages/messages.rb +55 -52
- data/lib/project_types/extension/models/lazy_specification_handler.rb +12 -0
- data/lib/project_types/extension/models/registration.rb +1 -0
- data/lib/project_types/extension/models/specification.rb +39 -0
- data/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +19 -0
- data/lib/project_types/extension/models/specification_handlers/default.rb +75 -0
- data/lib/project_types/extension/models/specifications.rb +88 -0
- data/lib/project_types/extension/tasks/configure_features.rb +54 -0
- data/lib/project_types/extension/tasks/converters/app_converter.rb +6 -6
- data/lib/project_types/extension/tasks/converters/registration_converter.rb +8 -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 +18 -0
- 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 +42 -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 +3 -34
- 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 +17 -8
- data/lib/project_types/node/messages/messages.rb +13 -47
- 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 +56 -54
- 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 +35 -25
- data/lib/project_types/rails/gem.rb +24 -24
- data/lib/project_types/rails/messages/messages.rb +6 -5
- data/lib/project_types/rails/ruby.rb +2 -2
- data/lib/project_types/script/cli.rb +38 -39
- data/lib/project_types/script/commands/create.rb +12 -14
- data/lib/project_types/script/commands/push.rb +10 -17
- data/lib/project_types/script/config/extension_points.yml +29 -10
- data/lib/project_types/script/errors.rb +1 -2
- data/lib/project_types/script/forms/create.rb +18 -5
- data/lib/project_types/script/graphql/app_script_update_or_create.graphql +9 -1
- data/lib/project_types/script/graphql/script_service_proxy.graphql +1 -2
- data/lib/project_types/script/layers/application/build_script.rb +10 -7
- data/lib/project_types/script/layers/application/create_script.rb +37 -25
- data/lib/project_types/script/layers/application/extension_points.rb +25 -0
- data/lib/project_types/script/layers/application/project_dependencies.rb +4 -4
- data/lib/project_types/script/layers/application/push_script.rb +13 -18
- data/lib/project_types/script/layers/domain/config_ui.rb +16 -0
- data/lib/project_types/script/layers/domain/errors.rb +20 -0
- data/lib/project_types/script/layers/domain/extension_point.rb +82 -11
- data/lib/project_types/script/layers/domain/metadata.rb +48 -0
- data/lib/project_types/script/layers/domain/push_package.rb +25 -6
- data/lib/project_types/script/layers/domain/script_project.rb +34 -0
- data/lib/project_types/script/layers/infrastructure/assemblyscript_project_creator.rb +42 -13
- data/lib/project_types/script/layers/infrastructure/assemblyscript_task_runner.rb +24 -49
- data/lib/project_types/script/layers/infrastructure/errors.rb +32 -19
- data/lib/project_types/script/layers/infrastructure/extension_point_repository.rb +12 -6
- data/lib/project_types/script/layers/infrastructure/project_creator.rb +2 -1
- data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +22 -17
- data/lib/project_types/script/layers/infrastructure/rust_project_creator.rb +72 -0
- data/lib/project_types/script/layers/infrastructure/rust_task_runner.rb +59 -0
- data/lib/project_types/script/layers/infrastructure/script_project_repository.rb +145 -0
- data/lib/project_types/script/layers/infrastructure/script_service.rb +32 -75
- data/lib/project_types/script/layers/infrastructure/task_runner.rb +4 -3
- data/lib/project_types/script/messages/messages.rb +58 -59
- data/lib/project_types/script/ui/error_handler.rb +115 -72
- 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 +40 -0
- data/lib/project_types/theme/commands/connect.rb +54 -0
- data/lib/project_types/theme/commands/create.rb +48 -0
- data/lib/project_types/theme/commands/deploy.rb +38 -0
- data/lib/project_types/theme/commands/generate.rb +20 -0
- data/lib/project_types/theme/commands/generate/env.rb +79 -0
- data/lib/project_types/theme/commands/push.rb +55 -0
- data/lib/project_types/theme/commands/serve.rb +31 -0
- data/lib/project_types/theme/forms/connect.rb +34 -0
- data/lib/project_types/theme/forms/create.rb +22 -0
- data/lib/project_types/theme/messages/messages.rb +147 -0
- data/lib/project_types/theme/tasks/ensure_themekit_installed.rb +78 -0
- data/lib/project_types/theme/themekit.rb +113 -0
- data/lib/rubygems_plugin.rb +3 -3
- data/lib/shopify-cli/admin_api.rb +52 -12
- 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 +34 -31
- 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 +33 -33
- data/lib/shopify-cli/commands/version.rb +2 -2
- data/lib/shopify-cli/context.rb +71 -22
- 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 -3
- 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 +21 -9
- 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 +9 -16
- data/lib/shopify-cli/method_object.rb +104 -0
- 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 +24 -18
- 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 +4 -4
- data/lib/shopify-cli/resolve_constant.rb +25 -0
- data/lib/shopify-cli/resources.rb +1 -1
- data/lib/shopify-cli/resources/env_file.rb +9 -9
- data/lib/shopify-cli/result.rb +432 -0
- data/lib/shopify-cli/shopifolk.rb +6 -8
- 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 +12 -12
- 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 +25 -24
- 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 +36 -30
- data/lib/shopify-cli/version.rb +1 -1
- data/lib/shopify_cli.rb +57 -52
- data/shopify-cli.gemspec +6 -6
- data/shopify.fish +1 -1
- data/shopify.sh +1 -1
- data/vendor/deps/cli-kit/REVISION +1 -1
- data/vendor/deps/cli-kit/lib/cli/kit/logger.rb +2 -2
- data/vendor/deps/cli-kit/lib/cli/kit/system.rb +3 -3
- data/vendor/deps/cli-ui/REVISION +1 -1
- data/vendor/deps/cli-ui/lib/cli/ui.rb +26 -22
- data/vendor/deps/cli-ui/lib/cli/ui/ansi.rb +4 -6
- data/vendor/deps/cli-ui/lib/cli/ui/frame.rb +3 -3
- data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_stack.rb +8 -9
- data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style.rb +1 -1
- data/vendor/deps/cli-ui/lib/cli/ui/glyph.rb +1 -0
- data/vendor/deps/cli-ui/lib/cli/ui/printer.rb +15 -3
- data/vendor/deps/cli-ui/lib/cli/ui/prompt/interactive_options.rb +4 -11
- data/vendor/deps/cli-ui/lib/cli/ui/spinner.rb +3 -5
- data/vendor/deps/cli-ui/lib/cli/ui/terminal.rb +10 -10
- data/vendor/deps/cli-ui/lib/cli/ui/version.rb +1 -1
- data/vendor/deps/cli-ui/lib/cli/ui/wrap.rb +56 -0
- data/vendor/deps/webrick/.gitignore +9 -0
- data/vendor/deps/webrick/Gemfile +3 -0
- data/vendor/deps/webrick/LICENSE.txt +22 -0
- data/vendor/deps/webrick/README.md +61 -0
- data/vendor/deps/webrick/Rakefile +10 -0
- data/vendor/deps/webrick/lib/webrick.rb +232 -0
- data/vendor/deps/webrick/lib/webrick/accesslog.rb +157 -0
- data/vendor/deps/webrick/lib/webrick/cgi.rb +313 -0
- data/vendor/deps/webrick/lib/webrick/compat.rb +36 -0
- data/vendor/deps/webrick/lib/webrick/config.rb +158 -0
- data/vendor/deps/webrick/lib/webrick/cookie.rb +172 -0
- data/vendor/deps/webrick/lib/webrick/htmlutils.rb +30 -0
- data/vendor/deps/webrick/lib/webrick/httpauth.rb +96 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/authenticator.rb +117 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/basicauth.rb +116 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/digestauth.rb +395 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/htdigest.rb +132 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/htgroup.rb +97 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/htpasswd.rb +158 -0
- data/vendor/deps/webrick/lib/webrick/httpauth/userdb.rb +53 -0
- data/vendor/deps/webrick/lib/webrick/httpproxy.rb +354 -0
- data/vendor/deps/webrick/lib/webrick/httprequest.rb +636 -0
- data/vendor/deps/webrick/lib/webrick/httpresponse.rb +564 -0
- data/vendor/deps/webrick/lib/webrick/https.rb +152 -0
- data/vendor/deps/webrick/lib/webrick/httpserver.rb +294 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet.rb +23 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/abstract.rb +152 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/cgi_runner.rb +47 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/cgihandler.rb +126 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/erbhandler.rb +88 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/filehandler.rb +552 -0
- data/vendor/deps/webrick/lib/webrick/httpservlet/prochandler.rb +47 -0
- data/vendor/deps/webrick/lib/webrick/httpstatus.rb +194 -0
- data/vendor/deps/webrick/lib/webrick/httputils.rb +512 -0
- data/vendor/deps/webrick/lib/webrick/httpversion.rb +76 -0
- data/vendor/deps/webrick/lib/webrick/log.rb +156 -0
- data/vendor/deps/webrick/lib/webrick/server.rb +381 -0
- data/vendor/deps/webrick/lib/webrick/ssl.rb +215 -0
- data/vendor/deps/webrick/lib/webrick/utils.rb +265 -0
- data/vendor/deps/webrick/lib/webrick/version.rb +18 -0
- data/vendor/deps/webrick/webrick.gemspec +74 -0
- data/vendor/gen/template/bin/update-deps +9 -9
- metadata +83 -35
- data/docs/Gemfile +0 -5
- data/docs/Gemfile.lock +0 -258
- data/docs/_data/nav.yml +0 -35
- data/docs/_includes/footer.html +0 -15
- data/docs/_includes/head.html +0 -19
- data/docs/_includes/sidebar_nav.html +0 -22
- data/docs/_includes/toc.html +0 -112
- data/docs/_layouts/default.html +0 -79
- data/docs/css/docs.css +0 -157
- data/docs/images/header.png +0 -0
- data/docs/installing-ruby.md +0 -28
- data/lib/project_types/extension/features/argo/admin.rb +0 -20
- data/lib/project_types/extension/features/argo/base.rb +0 -129
- data/lib/project_types/extension/features/argo/checkout.rb +0 -20
- data/lib/project_types/extension/forms/register.rb +0 -47
- data/lib/project_types/extension/models/type.rb +0 -81
- data/lib/project_types/extension/models/types/checkout_post_purchase.rb +0 -23
- data/lib/project_types/extension/models/types/product_subscription.rb +0 -24
- data/lib/project_types/node/commands/generate/billing.rb +0 -39
- data/lib/project_types/node/commands/generate/page.rb +0 -59
- data/lib/project_types/node/commands/generate/webhook.rb +0 -37
- data/lib/project_types/script/commands/disable.rb +0 -25
- data/lib/project_types/script/commands/enable.rb +0 -78
- 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/domain/script.rb +0 -18
- data/lib/project_types/script/layers/infrastructure/script_repository.rb +0 -47
- data/lib/project_types/script/script_project.rb +0 -54
- data/lib/project_types/script/templates/ts/as-pect.config.js +0 -27
- data/lib/project_types/script/templates/ts/as-pect.d.ts +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "shopify_cli"
|
|
2
2
|
|
|
3
3
|
module ShopifyCli
|
|
4
4
|
module Commands
|
|
@@ -10,11 +10,11 @@ module ShopifyCli
|
|
|
10
10
|
|
|
11
11
|
def call(args, command_name)
|
|
12
12
|
unless args.empty?
|
|
13
|
-
@ctx.puts(@ctx.message(
|
|
13
|
+
@ctx.puts(@ctx.message("core.create.error.invalid_app_type", args[0]))
|
|
14
14
|
return @ctx.puts(self.class.help)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
type_name = CLI::UI::Prompt.ask(@ctx.message(
|
|
17
|
+
type_name = CLI::UI::Prompt.ask(@ctx.message("core.create.project_type_select")) do |handler|
|
|
18
18
|
self.class.all_visible_type.each do |type|
|
|
19
19
|
handler.option(type.project_name) { type.project_type }
|
|
20
20
|
end
|
|
@@ -22,7 +22,7 @@ module ShopifyCli
|
|
|
22
22
|
|
|
23
23
|
klass = ProjectType.load_type(type_name).create_command
|
|
24
24
|
klass.ctx = @ctx
|
|
25
|
-
klass.call(args, command_name,
|
|
25
|
+
klass.call(args, command_name, "create")
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def self.all_visible_type
|
|
@@ -33,7 +33,7 @@ module ShopifyCli
|
|
|
33
33
|
|
|
34
34
|
def self.help
|
|
35
35
|
project_types = all_visible_type.map(&:project_type).sort.join(" | ")
|
|
36
|
-
ShopifyCli::Context.message(
|
|
36
|
+
ShopifyCli::Context.message("core.create.help", ShopifyCli::TOOL_NAME, project_types)
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def self.extended_help
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "shopify_cli"
|
|
2
2
|
|
|
3
3
|
module ShopifyCli
|
|
4
4
|
module Commands
|
|
5
5
|
class Help < ShopifyCli::Command
|
|
6
6
|
def call(args, _name)
|
|
7
7
|
command = args.shift
|
|
8
|
-
if command && command !=
|
|
8
|
+
if command && command != "help"
|
|
9
9
|
if Registry.exist?(command)
|
|
10
10
|
cmd, _ = Registry.lookup_command(command)
|
|
11
11
|
subcmd, _ = cmd.subcommand_registry.lookup_command(args.first)
|
|
@@ -16,15 +16,15 @@ module ShopifyCli
|
|
|
16
16
|
end
|
|
17
17
|
return
|
|
18
18
|
else
|
|
19
|
-
@ctx.puts(@ctx.message(
|
|
19
|
+
@ctx.puts(@ctx.message("core.help.error.command_not_found", command))
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
preamble = @ctx.message(
|
|
23
|
+
preamble = @ctx.message("core.help.preamble", ShopifyCli::TOOL_NAME)
|
|
24
24
|
@ctx.puts(preamble)
|
|
25
25
|
|
|
26
26
|
core_commands.each do |name, klass|
|
|
27
|
-
next if name ==
|
|
27
|
+
next if name == "help"
|
|
28
28
|
@ctx.puts("{{command:#{name}}}: #{klass.help}\n")
|
|
29
29
|
end
|
|
30
30
|
|
|
@@ -34,7 +34,7 @@ module ShopifyCli
|
|
|
34
34
|
@ctx.puts("{{bold:Available commands for #{project_type_name} projects:}}\n\n")
|
|
35
35
|
|
|
36
36
|
local_commands.each do |name, klass|
|
|
37
|
-
next if name ==
|
|
37
|
+
next if name == "help"
|
|
38
38
|
@ctx.puts("{{command:#{name}}}: #{klass.help}\n")
|
|
39
39
|
end
|
|
40
40
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "shopify_cli"
|
|
2
2
|
|
|
3
3
|
module ShopifyCli
|
|
4
4
|
module Commands
|
|
@@ -12,11 +12,11 @@ module ShopifyCli
|
|
|
12
12
|
LOGIN_TOKENS.each do |token|
|
|
13
13
|
ShopifyCli::DB.del(token) if ShopifyCli::DB.exists?(token)
|
|
14
14
|
end
|
|
15
|
-
@ctx.puts(@ctx.message(
|
|
15
|
+
@ctx.puts(@ctx.message("core.logout.success"))
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def self.help
|
|
19
|
-
ShopifyCli::Context.message(
|
|
19
|
+
ShopifyCli::Context.message("core.logout.help", ShopifyCli::TOOL_NAME)
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
1
|
+
require "shopify_cli"
|
|
2
|
+
require "rbconfig"
|
|
3
3
|
|
|
4
4
|
module ShopifyCli
|
|
5
5
|
module Commands
|
|
@@ -9,13 +9,13 @@ module ShopifyCli
|
|
|
9
9
|
def call(args, _name)
|
|
10
10
|
show_all_details = false
|
|
11
11
|
flag = args.shift
|
|
12
|
-
if flag && flag !=
|
|
13
|
-
@ctx.puts(@ctx.message(
|
|
12
|
+
if flag && flag != "all"
|
|
13
|
+
@ctx.puts(@ctx.message("core.system.error.unknown_option", flag))
|
|
14
14
|
@ctx.puts("\n" + self.class.help)
|
|
15
15
|
return
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
show_all_details = true if flag ==
|
|
18
|
+
show_all_details = true if flag == "all"
|
|
19
19
|
|
|
20
20
|
display_environment if show_all_details
|
|
21
21
|
|
|
@@ -27,7 +27,7 @@ module ShopifyCli
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def self.help
|
|
30
|
-
ShopifyCli::Context.message(
|
|
30
|
+
ShopifyCli::Context.message("core.system.help", ShopifyCli::TOOL_NAME)
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
private
|
|
@@ -47,14 +47,14 @@ module ShopifyCli
|
|
|
47
47
|
|
|
48
48
|
cli_constants += cli_constants_extra if show_all_details
|
|
49
49
|
|
|
50
|
-
@ctx.puts(@ctx.message(
|
|
50
|
+
@ctx.puts(@ctx.message("core.system.header"))
|
|
51
51
|
cli_constants.each do |s|
|
|
52
|
-
@ctx.puts(" " + @ctx.message(
|
|
52
|
+
@ctx.puts(" " + @ctx.message("core.system.const", s, ShopifyCli.const_get(s.to_sym)) + "\n")
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
if show_all_details
|
|
56
56
|
cli_path_methods.each do |m|
|
|
57
|
-
@ctx.puts(" " + @ctx.message(
|
|
57
|
+
@ctx.puts(" " + @ctx.message("core.system.const", m.upcase, ShopifyCli.send(m)) + "\n")
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
end
|
|
@@ -62,55 +62,55 @@ module ShopifyCli
|
|
|
62
62
|
def display_cli_ruby(_show_all_details)
|
|
63
63
|
rbconfig_constants = %w(host RUBY_VERSION_NAME)
|
|
64
64
|
|
|
65
|
-
@ctx.puts("\n" + @ctx.message(
|
|
65
|
+
@ctx.puts("\n" + @ctx.message("core.system.ruby_header", RbConfig.ruby))
|
|
66
66
|
rbconfig_constants.each do |s|
|
|
67
|
-
@ctx.puts(" " + @ctx.message(
|
|
67
|
+
@ctx.puts(" " + @ctx.message("core.system.rb_config", RbConfig::CONFIG[s], s))
|
|
68
68
|
end
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
def display_utility_commands(_show_all_details)
|
|
72
72
|
commands = %w(git curl tar)
|
|
73
73
|
|
|
74
|
-
@ctx.puts("\n" + @ctx.message(
|
|
74
|
+
@ctx.puts("\n" + @ctx.message("core.system.command_header"))
|
|
75
75
|
commands.each do |s|
|
|
76
76
|
cmd_path = @ctx.which(s)
|
|
77
77
|
|
|
78
78
|
if !cmd_path.nil?
|
|
79
|
-
@ctx.puts(" " + @ctx.message(
|
|
79
|
+
@ctx.puts(" " + @ctx.message("core.system.command_with_path", s, cmd_path))
|
|
80
80
|
else
|
|
81
|
-
@ctx.puts(" " + @ctx.message(
|
|
81
|
+
@ctx.puts(" " + @ctx.message("core.system.command_not_found", s))
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
def display_ngrok
|
|
87
|
-
ngrok_location = File.join(ShopifyCli.cache_dir, @ctx.
|
|
87
|
+
ngrok_location = File.join(ShopifyCli.cache_dir, "ngrok#{@ctx.executable_file_extension}")
|
|
88
88
|
if File.exist?(ngrok_location)
|
|
89
|
-
@ctx.puts(" " + @ctx.message(
|
|
89
|
+
@ctx.puts(" " + @ctx.message("core.system.ngrok_available", ngrok_location))
|
|
90
90
|
else
|
|
91
|
-
@ctx.puts(" " + @ctx.message(
|
|
91
|
+
@ctx.puts(" " + @ctx.message("core.system.ngrok_not_available"))
|
|
92
92
|
end
|
|
93
93
|
end
|
|
94
94
|
|
|
95
95
|
def display_project_commands(_show_all_details)
|
|
96
96
|
case Project.current_project_type
|
|
97
97
|
when :node
|
|
98
|
-
display_project(
|
|
98
|
+
display_project("Node.js", %w(npm node yarn))
|
|
99
99
|
when :rails
|
|
100
|
-
display_project(
|
|
100
|
+
display_project("Rails", %w(gem rails rake ruby))
|
|
101
101
|
end
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
def display_project(project_type, commands)
|
|
105
|
-
@ctx.puts("\n" + @ctx.message(
|
|
105
|
+
@ctx.puts("\n" + @ctx.message("core.system.project.header", project_type))
|
|
106
106
|
commands.each do |s|
|
|
107
107
|
cmd_path = @ctx.which(s)
|
|
108
108
|
if !cmd_path.nil?
|
|
109
|
-
version_output, _ = @ctx.capture2e(s,
|
|
109
|
+
version_output, _ = @ctx.capture2e(s, "--version")
|
|
110
110
|
version = version_output.match(/(\d+\.[^\s]+)/)[0]
|
|
111
|
-
@ctx.puts(" " + @ctx.message(
|
|
111
|
+
@ctx.puts(" " + @ctx.message("core.system.project.command_with_path", s, cmd_path.strip, version.strip))
|
|
112
112
|
else
|
|
113
|
-
@ctx.puts(" " + @ctx.message(
|
|
113
|
+
@ctx.puts(" " + @ctx.message("core.system.project.command_not_found", s))
|
|
114
114
|
end
|
|
115
115
|
end
|
|
116
116
|
display_ngrok
|
|
@@ -118,25 +118,25 @@ module ShopifyCli
|
|
|
118
118
|
end
|
|
119
119
|
|
|
120
120
|
def display_project_environment
|
|
121
|
-
@ctx.puts("\n " + @ctx.message(
|
|
122
|
-
if File.exist?(
|
|
121
|
+
@ctx.puts("\n " + @ctx.message("core.system.project.env_header"))
|
|
122
|
+
if File.exist?("./.env")
|
|
123
123
|
Project.current.env.to_h.each do |k, v|
|
|
124
|
-
display_value = if v.nil? || v.strip ==
|
|
125
|
-
@ctx.message(
|
|
124
|
+
display_value = if v.nil? || v.strip == ""
|
|
125
|
+
@ctx.message("core.system.project.env_not_set")
|
|
126
126
|
else
|
|
127
127
|
k.match(/^SHOPIFY_API/) ? "********" : v
|
|
128
128
|
end
|
|
129
|
-
@ctx.puts(" " + @ctx.message(
|
|
129
|
+
@ctx.puts(" " + @ctx.message("core.system.project.env", k, display_value))
|
|
130
130
|
end
|
|
131
131
|
else
|
|
132
|
-
@ctx.puts(" " + @ctx.message(
|
|
132
|
+
@ctx.puts(" " + @ctx.message("core.system.project.no_env"))
|
|
133
133
|
end
|
|
134
134
|
end
|
|
135
135
|
|
|
136
136
|
def display_environment
|
|
137
|
-
@ctx.puts(@ctx.message(
|
|
137
|
+
@ctx.puts(@ctx.message("core.system.environment_header"))
|
|
138
138
|
%w(TERM SHELL PATH USING_SHOPIFY_CLI LANG).each do |k|
|
|
139
|
-
@ctx.puts(" " + @ctx.message(
|
|
139
|
+
@ctx.puts(" " + @ctx.message("core.system.env", k, ENV[k])) unless ENV[k].nil?
|
|
140
140
|
end
|
|
141
141
|
@ctx.puts("")
|
|
142
142
|
end
|
|
@@ -144,8 +144,8 @@ module ShopifyCli
|
|
|
144
144
|
def display_shopify_staff_identity
|
|
145
145
|
is_shopifolk = ShopifyCli::Shopifolk.check
|
|
146
146
|
if is_shopifolk
|
|
147
|
-
@ctx.puts("\n" + @ctx.message(
|
|
148
|
-
@ctx.puts(" " + @ctx.message(
|
|
147
|
+
@ctx.puts("\n" + @ctx.message("core.system.identity_header"))
|
|
148
|
+
@ctx.puts(" " + @ctx.message("core.system.identity_is_shopifolk"))
|
|
149
149
|
end
|
|
150
150
|
end
|
|
151
151
|
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "shopify_cli"
|
|
2
2
|
|
|
3
3
|
module ShopifyCli
|
|
4
4
|
module Commands
|
|
5
5
|
class Version < ShopifyCli::Command
|
|
6
6
|
def self.help
|
|
7
|
-
ShopifyCli::Context.message(
|
|
7
|
+
ShopifyCli::Context.message("core.version.help", ShopifyCli::TOOL_NAME)
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def call(_args, _name)
|
data/lib/shopify-cli/context.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
require
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require
|
|
2
|
+
require "shopify_cli"
|
|
3
|
+
require "fileutils"
|
|
4
|
+
require "rbconfig"
|
|
5
|
+
require "net/http"
|
|
6
|
+
require "json"
|
|
7
7
|
|
|
8
8
|
module ShopifyCli
|
|
9
9
|
##
|
|
@@ -13,9 +13,9 @@ module ShopifyCli
|
|
|
13
13
|
# resoures.
|
|
14
14
|
#
|
|
15
15
|
class Context
|
|
16
|
-
GEM_LATEST_URI = URI.parse(
|
|
17
|
-
VERSION_CHECK_SECTION =
|
|
18
|
-
LAST_CHECKED_AT_FIELD =
|
|
16
|
+
GEM_LATEST_URI = URI.parse("https://rubygems.org/api/v1/versions/shopify-cli/latest.json")
|
|
17
|
+
VERSION_CHECK_SECTION = "versioncheck"
|
|
18
|
+
LAST_CHECKED_AT_FIELD = "last_checked_at"
|
|
19
19
|
VERSION_CHECK_INTERVAL = 86400
|
|
20
20
|
|
|
21
21
|
class << self
|
|
@@ -40,7 +40,7 @@ module ShopifyCli
|
|
|
40
40
|
# * `key` - a symbol representing the message
|
|
41
41
|
# * `params` - the parameters to format the string with
|
|
42
42
|
def message(key, *params)
|
|
43
|
-
key_parts = key.split(
|
|
43
|
+
key_parts = key.split(".").map(&:to_sym)
|
|
44
44
|
str = Context.messages.dig(*key_parts)
|
|
45
45
|
str ? str % params : key
|
|
46
46
|
end
|
|
@@ -86,7 +86,7 @@ module ShopifyCli
|
|
|
86
86
|
# See `#development?` for checking for development environment.
|
|
87
87
|
#
|
|
88
88
|
def system?
|
|
89
|
-
!Dir.exist?(File.join(ShopifyCli::ROOT,
|
|
89
|
+
!Dir.exist?(File.join(ShopifyCli::ROOT, "test"))
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
# will return true if the cli is running on your development instance.
|
|
@@ -97,13 +97,13 @@ module ShopifyCli
|
|
|
97
97
|
|
|
98
98
|
# will return true while tests are running, either locally or on CI
|
|
99
99
|
def testing?
|
|
100
|
-
ci? || ENV[
|
|
100
|
+
ci? || ENV["TEST"]
|
|
101
101
|
end
|
|
102
102
|
|
|
103
103
|
##
|
|
104
104
|
# will return true if the cli is being tested on CI
|
|
105
105
|
def ci?
|
|
106
|
-
ENV[
|
|
106
|
+
ENV["CI"]
|
|
107
107
|
end
|
|
108
108
|
|
|
109
109
|
# get a environment variable value by name.
|
|
@@ -116,7 +116,7 @@ module ShopifyCli
|
|
|
116
116
|
#
|
|
117
117
|
def getenv(name)
|
|
118
118
|
v = @env[name]
|
|
119
|
-
v ==
|
|
119
|
+
v == "" ? nil : v
|
|
120
120
|
end
|
|
121
121
|
|
|
122
122
|
# set a environment variable value by name.
|
|
@@ -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
|
|
@@ -254,7 +282,7 @@ module ShopifyCli
|
|
|
254
282
|
# * `uri` - a http URI to open in a browser
|
|
255
283
|
#
|
|
256
284
|
def open_url!(uri)
|
|
257
|
-
help = message(
|
|
285
|
+
help = message("core.context.open_url", uri)
|
|
258
286
|
puts(help)
|
|
259
287
|
end
|
|
260
288
|
|
|
@@ -303,7 +331,7 @@ module ShopifyCli
|
|
|
303
331
|
# * `text` - a string message to output
|
|
304
332
|
#
|
|
305
333
|
def debug(text)
|
|
306
|
-
puts("{{red:DEBUG}} #{text}") if getenv(
|
|
334
|
+
puts("{{red:DEBUG}} #{text}") if getenv("DEBUG")
|
|
307
335
|
end
|
|
308
336
|
|
|
309
337
|
# proxy call to Context.message.
|
|
@@ -329,14 +357,18 @@ module ShopifyCli
|
|
|
329
357
|
# - `**kwargs`: additional keyword arguments to pass to Process.spawn
|
|
330
358
|
#
|
|
331
359
|
# #### Returns
|
|
332
|
-
# - `status`:
|
|
360
|
+
# - `status`: The `Process::Status` result of the command execution.
|
|
333
361
|
#
|
|
334
362
|
# #### Usage
|
|
335
363
|
#
|
|
336
364
|
# stat = @ctx.system('ls', 'a_folder')
|
|
337
365
|
#
|
|
338
366
|
def system(*args, **kwargs)
|
|
339
|
-
CLI::Kit::System.system(*args, env: @env, **kwargs)
|
|
367
|
+
process_status = CLI::Kit::System.system(*args, env: @env, **kwargs)
|
|
368
|
+
unless process_status.success?
|
|
369
|
+
abort("System call failed: #{args.join(" ")}")
|
|
370
|
+
end
|
|
371
|
+
process_status
|
|
340
372
|
end
|
|
341
373
|
|
|
342
374
|
# Execute a command in the user's environment
|
|
@@ -410,13 +442,13 @@ module ShopifyCli
|
|
|
410
442
|
#
|
|
411
443
|
def on_siginfo
|
|
412
444
|
# Reset any previous SIGINFO handling we had so the only action we take is the given block
|
|
413
|
-
trap(
|
|
445
|
+
trap("INFO", "DEFAULT")
|
|
414
446
|
|
|
415
447
|
fork do
|
|
416
448
|
begin
|
|
417
449
|
r, w = IO.pipe
|
|
418
450
|
@signal = false
|
|
419
|
-
trap(
|
|
451
|
+
trap("SIGINFO") do
|
|
420
452
|
@signal = true
|
|
421
453
|
w.write(0)
|
|
422
454
|
end
|
|
@@ -442,8 +474,8 @@ module ShopifyCli
|
|
|
442
474
|
# @todo This is currently a duplicate of CLI::Kit::System.which() - we should make that method public when we make
|
|
443
475
|
# Kit changes and make this a wrapper instead.
|
|
444
476
|
def which(cmd)
|
|
445
|
-
exts = ENV[
|
|
446
|
-
ENV[
|
|
477
|
+
exts = ENV["PATHEXT"] ? ENV["PATHEXT"].split(";") : [""]
|
|
478
|
+
ENV["PATH"].split(File::PATH_SEPARATOR).each do |path|
|
|
447
479
|
exts.each do |ext|
|
|
448
480
|
exe = File.join(File.expand_path(path), "#{cmd}#{ext}")
|
|
449
481
|
return exe if File.executable?(exe) && !File.directory?(exe)
|
|
@@ -470,10 +502,27 @@ module ShopifyCli
|
|
|
470
502
|
end
|
|
471
503
|
end
|
|
472
504
|
|
|
505
|
+
# Returns file extension depending on OS
|
|
506
|
+
# since windows has multiple extensions, the default is .exe unless otherwise specified
|
|
507
|
+
#
|
|
508
|
+
# #### Parameters
|
|
509
|
+
# - ext: optional extension for windows file
|
|
510
|
+
#
|
|
511
|
+
# #### Returns
|
|
512
|
+
# - ext: string for file extension on windows
|
|
513
|
+
# : empty string otherwise
|
|
514
|
+
def executable_file_extension(ext = ".exe")
|
|
515
|
+
if windows?
|
|
516
|
+
ext
|
|
517
|
+
else
|
|
518
|
+
""
|
|
519
|
+
end
|
|
520
|
+
end
|
|
521
|
+
|
|
473
522
|
private
|
|
474
523
|
|
|
475
524
|
def ctx_path(fname)
|
|
476
|
-
require
|
|
525
|
+
require "pathname"
|
|
477
526
|
if Pathname.new(fname).absolute?
|
|
478
527
|
fname
|
|
479
528
|
else
|