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.
Files changed (200) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer.json +5 -0
  3. data/.github/DESIGN.md +1 -1
  4. data/.github/ISSUE_TEMPLATE.md +7 -0
  5. data/.github/PULL_REQUEST_TEMPLATE.md +15 -4
  6. data/.github/workflows/shopify.yml +3 -6
  7. data/.vscode/extensions.json +5 -0
  8. data/.vscode/settings.json +9 -0
  9. data/CHANGELOG.md +98 -104
  10. data/CONTRIBUTING.md +1 -21
  11. data/Codespace.dockerfile +35 -0
  12. data/Gemfile +2 -0
  13. data/Gemfile.lock +9 -5
  14. data/README.md +20 -99
  15. data/RELEASING.md +17 -30
  16. data/Rakefile +0 -5
  17. data/Tests.dockerfile +35 -0
  18. data/assets/logo.png +0 -0
  19. data/dev.yml +0 -3
  20. data/docs/README.md +13 -0
  21. data/docs/contributors/testing.md +27 -0
  22. data/docs/users/installation.md +46 -0
  23. data/{THEMEKIT_MIGRATION.md → docs/users/migrate-from-themekit.md} +1 -1
  24. data/lib/project_types/extension/cli.rb +7 -3
  25. data/lib/project_types/extension/commands/create.rb +6 -6
  26. data/lib/project_types/extension/commands/extension_command.rb +1 -1
  27. data/lib/project_types/extension/features/argo.rb +9 -10
  28. data/lib/project_types/extension/features/argo_serve.rb +9 -23
  29. data/lib/project_types/extension/forms/create.rb +1 -1
  30. data/lib/project_types/extension/forms/questions/ask_template.rb +3 -6
  31. data/lib/project_types/extension/messages/messages.rb +1 -0
  32. data/lib/project_types/extension/models/development_server_requirements.rb +2 -3
  33. data/lib/project_types/extension/models/server_config/app.rb +13 -0
  34. data/lib/project_types/extension/models/server_config/development.rb +5 -4
  35. data/lib/project_types/extension/models/server_config/development_renderer.rb +1 -1
  36. data/lib/project_types/extension/models/server_config/development_resource.rb +13 -0
  37. data/lib/project_types/extension/models/server_config/extension.rb +4 -0
  38. data/lib/project_types/extension/models/server_config/root.rb +4 -1
  39. data/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +1 -1
  40. data/lib/project_types/extension/models/specification_handlers/checkout_ui_extension.rb +1 -1
  41. data/lib/project_types/extension/tasks/convert_server_config.rb +65 -0
  42. data/lib/project_types/extension/tasks/ensure_resource_url.rb +39 -0
  43. data/lib/project_types/extension/tasks/find_package_from_json.rb +37 -0
  44. data/lib/project_types/extension/tasks/merge_server_config.rb +32 -0
  45. data/lib/project_types/extension/tasks/run_extension_command.rb +10 -9
  46. data/lib/project_types/node/cli.rb +0 -16
  47. data/lib/project_types/node/forms/create.rb +5 -5
  48. data/lib/project_types/node/messages/messages.rb +2 -149
  49. data/lib/project_types/php/cli.rb +0 -11
  50. data/lib/project_types/php/forms/create.rb +5 -6
  51. data/lib/project_types/php/messages/messages.rb +2 -164
  52. data/lib/project_types/rails/cli.rb +0 -16
  53. data/lib/project_types/rails/commands/create.rb +46 -17
  54. data/lib/project_types/rails/forms/create.rb +5 -7
  55. data/lib/project_types/rails/messages/messages.rb +6 -154
  56. data/lib/project_types/script/cli.rb +1 -1
  57. data/lib/project_types/script/commands/create.rb +5 -6
  58. data/lib/project_types/script/commands/push.rb +1 -1
  59. data/lib/project_types/script/config/extension_points.yml +10 -0
  60. data/lib/project_types/script/errors.rb +0 -18
  61. data/lib/project_types/script/graphql/app_script_set.graphql +2 -0
  62. data/lib/project_types/script/layers/application/build_script.rb +2 -1
  63. data/lib/project_types/script/layers/application/create_script.rb +2 -2
  64. data/lib/project_types/script/layers/application/push_script.rb +15 -1
  65. data/lib/project_types/script/layers/domain/push_package.rb +5 -2
  66. data/lib/project_types/script/layers/domain/script_json.rb +1 -1
  67. data/lib/project_types/script/layers/infrastructure/api_clients/partners_proxy_api_client.rb +0 -4
  68. data/lib/project_types/script/layers/infrastructure/errors.rb +17 -2
  69. data/lib/project_types/script/layers/infrastructure/languages/assemblyscript_task_runner.rb +29 -13
  70. data/lib/project_types/script/layers/infrastructure/languages/typescript_task_runner.rb +29 -13
  71. data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +4 -2
  72. data/lib/project_types/script/layers/infrastructure/script_project_repository.rb +3 -4
  73. data/lib/project_types/script/layers/infrastructure/script_service.rb +7 -2
  74. data/lib/project_types/script/messages/messages.rb +9 -22
  75. data/lib/project_types/script/ui/error_handler.rb +16 -26
  76. data/lib/project_types/theme/cli.rb +1 -1
  77. data/lib/project_types/theme/commands/check.rb +1 -1
  78. data/lib/project_types/theme/commands/delete.rb +1 -1
  79. data/lib/project_types/theme/commands/init.rb +1 -1
  80. data/lib/project_types/theme/commands/language_server.rb +1 -1
  81. data/lib/project_types/theme/commands/package.rb +1 -1
  82. data/lib/project_types/theme/commands/publish.rb +1 -1
  83. data/lib/project_types/theme/commands/pull.rb +1 -1
  84. data/lib/project_types/theme/commands/push.rb +1 -1
  85. data/lib/project_types/theme/commands/serve.rb +10 -2
  86. data/lib/project_types/theme/messages/messages.rb +10 -0
  87. data/lib/shopify_cli/admin_api/populate_resource_command.rb +1 -1
  88. data/lib/shopify_cli/api.rb +7 -2
  89. data/lib/shopify_cli/app_type_detector.rb +36 -0
  90. data/lib/shopify_cli/command/app_sub_command.rb +10 -0
  91. data/lib/shopify_cli/command/project_command.rb +18 -0
  92. data/lib/shopify_cli/command/sub_command.rb +19 -0
  93. data/lib/shopify_cli/command.rb +13 -3
  94. data/lib/shopify_cli/command_options/command_serve_options.rb +43 -0
  95. data/lib/shopify_cli/command_options.rb +7 -0
  96. data/lib/shopify_cli/commands/app/connect.rb +22 -0
  97. data/lib/shopify_cli/commands/app/create/node.rb +38 -0
  98. data/lib/shopify_cli/commands/app/create/php.rb +36 -0
  99. data/lib/shopify_cli/commands/app/create/rails.rb +40 -0
  100. data/lib/shopify_cli/commands/app/create.rb +28 -0
  101. data/lib/shopify_cli/commands/app/deploy.rb +49 -0
  102. data/lib/shopify_cli/commands/app/open.rb +19 -0
  103. data/lib/shopify_cli/commands/app/serve.rb +49 -0
  104. data/lib/shopify_cli/commands/app/tunnel.rb +43 -0
  105. data/lib/shopify_cli/commands/app.rb +29 -0
  106. data/lib/shopify_cli/commands/config.rb +2 -2
  107. data/lib/shopify_cli/commands/login.rb +3 -3
  108. data/lib/shopify_cli/commands/reporting.rb +38 -0
  109. data/lib/shopify_cli/commands/switch.rb +1 -1
  110. data/lib/shopify_cli/commands.rb +2 -0
  111. data/lib/shopify_cli/constants.rb +11 -3
  112. data/lib/shopify_cli/core/monorail.rb +9 -20
  113. data/lib/shopify_cli/environment.rb +15 -1
  114. data/lib/shopify_cli/exception_reporter.rb +29 -16
  115. data/lib/shopify_cli/git.rb +12 -1
  116. data/lib/shopify_cli/github/issue_url_generator.rb +19 -0
  117. data/lib/shopify_cli/github.rb +5 -0
  118. data/lib/shopify_cli/messages/messages.rb +295 -22
  119. data/lib/shopify_cli/migrator/migration.rb +1 -1
  120. data/lib/shopify_cli/migrator/migrations/1631709766_noop.rb +1 -1
  121. data/lib/shopify_cli/migrator/migrations/1633691650_merge_reporting_configuration.rb +41 -0
  122. data/lib/shopify_cli/migrator.rb +9 -11
  123. data/lib/shopify_cli/project.rb +5 -1
  124. data/lib/shopify_cli/project_commands.rb +1 -1
  125. data/lib/shopify_cli/reporting_configuration_controller.rb +64 -0
  126. data/lib/shopify_cli/services/app/connect_service.rb +25 -0
  127. data/lib/shopify_cli/services/app/create/node_service.rb +153 -0
  128. data/lib/shopify_cli/services/app/create/php_service.rb +152 -0
  129. data/lib/shopify_cli/services/app/create/rails_service.rb +213 -0
  130. data/lib/shopify_cli/services/app/deploy/heroku/node_service.rb +101 -0
  131. data/lib/shopify_cli/services/app/deploy/heroku/php_service.rb +135 -0
  132. data/lib/shopify_cli/services/app/deploy/heroku/rails_service.rb +120 -0
  133. data/lib/shopify_cli/services/app/open_service.rb +19 -0
  134. data/lib/shopify_cli/services/app/serve/node_service.rb +42 -0
  135. data/lib/shopify_cli/services/app/serve/php_service.rb +46 -0
  136. data/lib/shopify_cli/services/app/serve/rails_service.rb +48 -0
  137. data/lib/shopify_cli/services/app/tunnel/auth_service.rb +21 -0
  138. data/lib/shopify_cli/services/app/tunnel/start_service.rb +20 -0
  139. data/lib/shopify_cli/services/app/tunnel/stop_service.rb +20 -0
  140. data/lib/shopify_cli/services/base_service.rb +13 -0
  141. data/lib/shopify_cli/services/reporting_service.rb +16 -0
  142. data/lib/shopify_cli/services.rb +37 -0
  143. data/lib/shopify_cli/theme/dev_server/local_assets.rb +1 -1
  144. data/lib/shopify_cli/theme/dev_server/watcher.rb +2 -2
  145. data/lib/shopify_cli/theme/dev_server.rb +9 -2
  146. data/lib/shopify_cli/version.rb +1 -1
  147. data/lib/shopify_cli.rb +5 -2
  148. data/shopify-cli.gemspec +2 -13
  149. data/shopify-dev +18 -0
  150. data/utilities/constants.rb +7 -0
  151. data/utilities/docker/container.rb +104 -0
  152. data/utilities/docker.rb +45 -3
  153. data/utilities/utilities.rb +1 -0
  154. metadata +63 -54
  155. data/Dockerfile +0 -17
  156. data/docs/_config.yml +0 -2
  157. data/docs/app/node/commands/index.md +0 -4
  158. data/docs/app/node/index.md +0 -4
  159. data/docs/app/rails/commands/index.md +0 -4
  160. data/docs/app/rails/index.md +0 -4
  161. data/docs/core/index.md +0 -4
  162. data/docs/getting-started/index.md +0 -4
  163. data/docs/getting-started/install/index.md +0 -4
  164. data/docs/getting-started/migrate/index.md +0 -4
  165. data/docs/getting-started/uninstall/index.md +0 -4
  166. data/docs/getting-started/upgrade/index.md +0 -4
  167. data/docs/help/start-app/index.md +0 -4
  168. data/docs/index.md +0 -4
  169. data/ext/shopify-cli/extconf.rb +0 -60
  170. data/install.sh +0 -7
  171. data/lib/project_types/extension/tasks/converters/server_config_converter.rb +0 -31
  172. data/lib/project_types/extension/tasks/load_server_config.rb +0 -23
  173. data/lib/project_types/node/commands/connect.rb +0 -21
  174. data/lib/project_types/node/commands/create.rb +0 -125
  175. data/lib/project_types/node/commands/deploy/heroku.rb +0 -96
  176. data/lib/project_types/node/commands/deploy.rb +0 -32
  177. data/lib/project_types/node/commands/generate.rb +0 -22
  178. data/lib/project_types/node/commands/open.rb +0 -18
  179. data/lib/project_types/node/commands/serve.rb +0 -54
  180. data/lib/project_types/node/commands/tunnel.rb +0 -41
  181. data/lib/project_types/php/commands/connect.rb +0 -19
  182. data/lib/project_types/php/commands/create.rb +0 -143
  183. data/lib/project_types/php/commands/deploy/heroku.rb +0 -129
  184. data/lib/project_types/php/commands/deploy.rb +0 -32
  185. data/lib/project_types/php/commands/open.rb +0 -16
  186. data/lib/project_types/php/commands/serve.rb +0 -51
  187. data/lib/project_types/php/commands/tunnel.rb +0 -37
  188. data/lib/project_types/rails/commands/connect.rb +0 -21
  189. data/lib/project_types/rails/commands/deploy/heroku.rb +0 -115
  190. data/lib/project_types/rails/commands/deploy.rb +0 -32
  191. data/lib/project_types/rails/commands/generate/webhook.rb +0 -42
  192. data/lib/project_types/rails/commands/generate.rb +0 -60
  193. data/lib/project_types/rails/commands/open.rb +0 -18
  194. data/lib/project_types/rails/commands/serve.rb +0 -52
  195. data/lib/project_types/rails/commands/tunnel.rb +0 -41
  196. data/lib/project_types/script/graphql/app_script_update_or_create.graphql +0 -0
  197. data/lib/shopify_cli/exception_reporter/permission_controller.rb +0 -54
  198. data/lib/shopify_cli/sub_command.rb +0 -17
  199. data/shopify.fish +0 -12
  200. data/shopify.sh +0 -11
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "shopify_cli"
4
-
5
- module PHP
6
- class Command
7
- class Tunnel < ShopifyCLI::SubCommand
8
- def call(args, _name)
9
- subcommand = args.shift
10
- case subcommand
11
- when "auth"
12
- token = args.shift
13
- if token.nil?
14
- @ctx.puts(@ctx.message("php.tunnel.error.token_argument_missing"))
15
- @ctx.puts("#{self.class.help}\n#{self.class.extended_help}")
16
- else
17
- ShopifyCLI::Tunnel.auth(@ctx, token)
18
- end
19
- when "start"
20
- ShopifyCLI::Tunnel.start(@ctx)
21
- when "stop"
22
- ShopifyCLI::Tunnel.stop(@ctx)
23
- else
24
- @ctx.puts(self.class.help)
25
- end
26
- end
27
-
28
- def self.help
29
- ShopifyCLI::Context.message("php.tunnel.help", ShopifyCLI::TOOL_NAME)
30
- end
31
-
32
- def self.extended_help
33
- ShopifyCLI::Context.message("php.tunnel.extended_help", ShopifyCLI::TOOL_NAME)
34
- end
35
- end
36
- end
37
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
- module Rails
3
- class Command
4
- class Connect < ShopifyCLI::SubCommand
5
- prerequisite_task ensure_project_type: :rails
6
-
7
- def call(*)
8
- if ShopifyCLI::Project.has_current? && ShopifyCLI::Project.current.env
9
- @ctx.puts(@ctx.message("rails.connect.production_warning"))
10
- end
11
-
12
- app = ShopifyCLI::Connect.new(@ctx).default_connect("rails")
13
- @ctx.done(@ctx.message("rails.connect.connected", app))
14
- end
15
-
16
- def self.help
17
- ShopifyCLI::Context.message("rails.connect.help", ShopifyCLI::TOOL_NAME, ShopifyCLI::TOOL_NAME)
18
- end
19
- end
20
- end
21
- end
@@ -1,115 +0,0 @@
1
- # frozen_string_literal: true
2
- require "shopify_cli"
3
-
4
- module Rails
5
- class Command
6
- class Deploy
7
- class Heroku
8
- class << self
9
- DB_CHECK_CMD = 'bundle exec rails runner "puts ActiveRecord::Base.connection.adapter_name.downcase"'
10
-
11
- def help
12
- ShopifyCLI::Context.message("rails.deploy.heroku.help", ShopifyCLI::TOOL_NAME)
13
- end
14
-
15
- def start(ctx)
16
- CLI::UI::Frame.open(ctx.message("rails.deploy.heroku.db_check.validating")) do
17
- CLI::UI::Spinner.spin(ctx.message("rails.deploy.heroku.db_check.checking")) do |spinner|
18
- db_type, err = check_db(ctx)
19
- ctx.abort(ctx.message(err)) unless err.nil?
20
- spinner.update_title(ctx.message("rails.deploy.heroku.db_check.validated", db_type))
21
- end
22
- true
23
- end
24
-
25
- spin_group = CLI::UI::SpinGroup.new
26
- heroku_service = ShopifyCLI::Heroku.new(ctx)
27
-
28
- spin_group.add(ctx.message("rails.deploy.heroku.downloading")) do |spinner|
29
- heroku_service.download
30
- spinner.update_title(ctx.message("rails.deploy.heroku.downloaded"))
31
- end
32
- spin_group.wait
33
-
34
- spin_group.add(ctx.message("rails.deploy.heroku.installing")) do |spinner|
35
- heroku_service.install
36
- spinner.update_title(ctx.message("rails.deploy.heroku.installed"))
37
- end
38
- spin_group.add(ctx.message("rails.deploy.heroku.git.checking")) do |spinner|
39
- ShopifyCLI::Git.init(ctx)
40
- spinner.update_title(ctx.message("rails.deploy.heroku.git.initialized"))
41
- end
42
- spin_group.wait
43
-
44
- if (account = heroku_service.whoami)
45
- ctx.puts(ctx.message("rails.deploy.heroku.authenticated_with_account", account))
46
- else
47
- CLI::UI::Frame.open(
48
- ctx.message("rails.deploy.heroku.authenticating"),
49
- success_text: ctx.message("rails.deploy.heroku.authenticated")
50
- ) do
51
- heroku_service.authenticate
52
- end
53
- end
54
-
55
- if (app_name = heroku_service.app)
56
- ctx.puts(ctx.message("rails.deploy.heroku.app.selected", app_name))
57
- else
58
- app_type = CLI::UI::Prompt.ask(ctx.message("rails.deploy.heroku.app.no_apps_found")) do |handler|
59
- handler.option(ctx.message("rails.deploy.heroku.app.create")) { :new }
60
- handler.option(ctx.message("rails.deploy.heroku.app.select")) { :existing }
61
- end
62
-
63
- if app_type == :existing
64
- app_name = CLI::UI::Prompt.ask(ctx.message("rails.deploy.heroku.app.name"))
65
- CLI::UI::Frame.open(
66
- ctx.message("rails.deploy.heroku.app.selecting", app_name),
67
- success_text: ctx.message("rails.deploy.heroku.app.selected", app_name)
68
- ) do
69
- heroku_service.select_existing_app(app_name)
70
- end
71
- elsif app_type == :new
72
- CLI::UI::Frame.open(
73
- ctx.message("rails.deploy.heroku.app.creating"),
74
- success_text: ctx.message("rails.deploy.heroku.app.created")
75
- ) do
76
- heroku_service.create_new_app
77
- end
78
- end
79
- end
80
-
81
- branches = ShopifyCLI::Git.branches(ctx)
82
- if branches.length == 1
83
- branch_to_deploy = branches[0]
84
- ctx.puts(ctx.message("rails.deploy.heroku.git.branch_selected", branch_to_deploy))
85
- else
86
- branch_to_deploy = CLI::UI::Prompt.ask(ctx.message("rails.deploy.heroku.git.what_branch")) do |handler|
87
- branches.each do |branch|
88
- handler.option(branch) { branch }
89
- end
90
- end
91
- end
92
-
93
- CLI::UI::Frame.open(
94
- ctx.message("rails.deploy.heroku.deploying"),
95
- success_text: ctx.message("rails.deploy.heroku.deployed")
96
- ) do
97
- heroku_service.deploy(branch_to_deploy)
98
- end
99
- end
100
-
101
- def check_db(ctx)
102
- out, stat = ctx.capture2e(DB_CHECK_CMD)
103
- if stat.success? && out.strip == "sqlite"
104
- ["sqlite", "rails.deploy.heroku.db_check.sqlite"]
105
- elsif !stat.success?
106
- [nil, "rails.deploy.heroku.db_check.problem"]
107
- else
108
- [out.strip, nil]
109
- end
110
- end
111
- end
112
- end
113
- end
114
- end
115
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
- require "shopify_cli"
3
-
4
- module Rails
5
- class Command
6
- class Deploy < ShopifyCLI::SubCommand
7
- prerequisite_task ensure_project_type: :rails
8
-
9
- autoload :Heroku, Project.project_filepath("commands/deploy/heroku")
10
-
11
- HEROKU = "heroku"
12
-
13
- def call(args, _name)
14
- subcommand = args.shift
15
- case subcommand
16
- when HEROKU
17
- Rails::Command::Deploy::Heroku.start(@ctx)
18
- else
19
- @ctx.puts(self.class.help)
20
- end
21
- end
22
-
23
- def self.help
24
- ShopifyCLI::Context.message("rails.deploy.help", ShopifyCLI::TOOL_NAME)
25
- end
26
-
27
- def self.extended_help
28
- ShopifyCLI::Context.message("rails.deploy.extended_help", ShopifyCLI::TOOL_NAME)
29
- end
30
- end
31
- end
32
- end
@@ -1,42 +0,0 @@
1
- require "shopify_cli"
2
- require "json"
3
- module Rails
4
- class Command
5
- class Generate
6
- class Webhook
7
- class << self
8
- def start(ctx, args)
9
- selected_type = args.first
10
- schema = ShopifyCLI::AdminAPI::Schema.get(ctx)
11
- webhooks = schema.get_names_from_type("WebhookSubscriptionTopic")
12
- unless selected_type && webhooks.include?(selected_type)
13
- selected_type = CLI::UI::Prompt.ask(ctx.message("rails.generate.webhook.select")) do |handler|
14
- webhooks.each do |type|
15
- handler.option(type) { type }
16
- end
17
- end
18
- end
19
- spin_group = CLI::UI::SpinGroup.new
20
- spin_group.add(ctx.message("rails.generate.webhook.selected", selected_type)) do |spinner|
21
- Rails::Command::Generate.run_generate(generate_command(selected_type, ctx), selected_type, ctx)
22
- spinner.update_title("{{green:#{selected_type}}} config/initializers/shopify_app.rb")
23
- end
24
- spin_group.wait
25
- end
26
-
27
- def help
28
- ShopifyCLI::Context.message("rails.generate.webhook.help", ShopifyCLI::TOOL_NAME)
29
- end
30
-
31
- def generate_command(selected_type, ctx)
32
- parts = selected_type.downcase.split("_")
33
- host = ShopifyCLI::Project.current.env.host
34
- selected_type = parts[0..-2].join("_") + "/" + parts[-1]
35
- command = ctx.windows? ? "ruby bin\\rails" : "bin/rails"
36
- "#{command} g shopify_app:add_webhook -t #{selected_type} -a #{host}/webhooks/#{selected_type.downcase}"
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,60 +0,0 @@
1
- # frozen_string_literal: true
2
- require "shopify_cli"
3
-
4
- module Rails
5
- class Command
6
- class Generate < ShopifyCLI::SubCommand
7
- prerequisite_task ensure_project_type: :rails
8
-
9
- autoload :Webhook, Project.project_filepath("commands/generate/webhook")
10
-
11
- WEBHOOK = "webhook"
12
-
13
- def call(args, _name)
14
- subcommand = args.shift
15
- case subcommand
16
- when WEBHOOK
17
- Rails::Command::Generate::Webhook.start(@ctx, args)
18
- else
19
- @ctx.puts(self.class.help)
20
- end
21
- end
22
-
23
- def self.help
24
- ShopifyCLI::Context.message("rails.generate.help", ShopifyCLI::TOOL_NAME)
25
- end
26
-
27
- def self.extended_help
28
- extended_help = "{{bold:Subcommands:}}\n"
29
- subcommand_registry.resolved_commands.sort.each do |name, klass|
30
- extended_help += " {{cyan:#{name}}}: "
31
-
32
- if (subcmd_help = klass.help)
33
- extended_help += subcmd_help.gsub("\n ", "\n ")
34
- end
35
- extended_help += "\n"
36
- end
37
- extended_help += ShopifyCLI::Context.message("rails.generate.extended_help", ShopifyCLI::TOOL_NAME)
38
- end
39
-
40
- def self.run_generate(script, name, ctx)
41
- Gem.gem_path(ctx)
42
- stat = ctx.system(script)
43
- unless stat.success?
44
- ctx.abort(response(stat.exitstatus, name, ctx))
45
- end
46
- end
47
-
48
- def self.response(code, name, ctx)
49
- case code
50
- when 1
51
- ctx.message("rails.generate.error.generic", name)
52
- when 2
53
- ctx.message("rails.generate.error.name_exists", name)
54
- else
55
- ctx.message("rails.error.generic")
56
- end
57
- end
58
- end
59
- end
60
- end
@@ -1,18 +0,0 @@
1
- require "shopify_cli"
2
-
3
- module Rails
4
- class Command
5
- class Open < ShopifyCLI::SubCommand
6
- prerequisite_task ensure_project_type: :rails
7
-
8
- def call(*)
9
- project = ShopifyCLI::Project.current
10
- @ctx.open_url!("#{project.env.host}/login?shop=#{project.env.shop}")
11
- end
12
-
13
- def self.help
14
- ShopifyCLI::Context.message("rails.open.help", ShopifyCLI::TOOL_NAME)
15
- end
16
- end
17
- end
18
- end
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
- module Rails
3
- class Command
4
- class Serve < ShopifyCLI::SubCommand
5
- prerequisite_task ensure_project_type: :rails
6
- prerequisite_task :ensure_env, :ensure_dev_store
7
-
8
- options do |parser, flags|
9
- parser.on("--host=HOST") do |h|
10
- flags[:host] = h.gsub('"', "")
11
- end
12
- end
13
-
14
- def call(*)
15
- project = ShopifyCLI::Project.current
16
- url = options.flags[:host] || ShopifyCLI::Tunnel.start(@ctx)
17
- @ctx.abort(@ctx.message("rails.serve.error.host_must_be_https")) if url.match(/^https/i).nil?
18
- project.env.update(@ctx, :host, url)
19
- ShopifyCLI::Tasks::UpdateDashboardURLS.call(
20
- @ctx,
21
- url: url,
22
- callback_url: "/auth/shopify/callback",
23
- )
24
-
25
- if project.env.shop
26
- project_url = "#{project.env.host}/login?shop=#{project.env.shop}"
27
- @ctx.puts("\n" + @ctx.message("rails.serve.open_info", project_url) + "\n")
28
- end
29
-
30
- CLI::UI::Frame.open(@ctx.message("rails.serve.running_server")) do
31
- env = ShopifyCLI::Project.current.env.to_h
32
- env.delete("HOST")
33
- env["PORT"] = ShopifyCLI::Tunnel::PORT.to_s
34
- env["GEM_PATH"] = Gem.gem_path(@ctx)
35
- if @ctx.windows?
36
- @ctx.system("ruby bin\\rails server", env: env)
37
- else
38
- @ctx.system("bin/rails server", env: env)
39
- end
40
- end
41
- end
42
-
43
- def self.help
44
- ShopifyCLI::Context.message("rails.serve.help", ShopifyCLI::TOOL_NAME)
45
- end
46
-
47
- def self.extended_help
48
- ShopifyCLI::Context.message("rails.serve.extended_help", ShopifyCLI::TOOL_NAME)
49
- end
50
- end
51
- end
52
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "shopify_cli"
4
-
5
- module Rails
6
- class Command
7
- class Tunnel < ShopifyCLI::SubCommand
8
- # subcommands :auth, :start, :stop
9
-
10
- prerequisite_task ensure_project_type: :rails
11
-
12
- def call(args, _name)
13
- subcommand = args.shift
14
- case subcommand
15
- when "auth"
16
- token = args.shift
17
- if token.nil?
18
- @ctx.puts(@ctx.message("rails.tunnel.error.token_argument_missing"))
19
- @ctx.puts("#{self.class.help}\n#{self.class.extended_help}")
20
- else
21
- ShopifyCLI::Tunnel.auth(@ctx, token)
22
- end
23
- when "start"
24
- ShopifyCLI::Tunnel.start(@ctx)
25
- when "stop"
26
- ShopifyCLI::Tunnel.stop(@ctx)
27
- else
28
- @ctx.puts(self.class.help)
29
- end
30
- end
31
-
32
- def self.help
33
- ShopifyCLI::Context.message("rails.tunnel.help", ShopifyCLI::TOOL_NAME)
34
- end
35
-
36
- def self.extended_help
37
- ShopifyCLI::Context.message("rails.tunnel.extended_help", ShopifyCLI::TOOL_NAME)
38
- end
39
- end
40
- end
41
- end
@@ -1,54 +0,0 @@
1
- module ShopifyCLI
2
- module ExceptionReporter
3
- module PermissionController
4
- def self.report_error?(context: ShopifyCLI::Context.new)
5
- CLI::UI::Prompt.ask(context.message("core.error_reporting.report_error.question")) do |handler|
6
- handler.option(context.message("core.error_reporting.report_error.yes")) { |_| true }
7
- handler.option(context.message("core.error_reporting.report_error.no")) { |_| false }
8
- end
9
- end
10
-
11
- def self.automatic_reporting_prompted?
12
- ShopifyCLI::Config.get_section(Constants::Config::Sections::ErrorTracking::NAME).key?(
13
- Constants::Config::Sections::ErrorTracking::Fields::AUTOMATIC_REPORTING
14
- )
15
- end
16
-
17
- def self.can_report_automatically?(context: ShopifyCLI::Context.new)
18
- # If the terminal is not interactive we can't prompt the user.
19
- return false unless ShopifyCLI::Environment.interactive?
20
-
21
- if automatic_reporting_prompted?
22
- automatic_reporting_enabled?
23
- else
24
- prompt_user(context: context)
25
- end
26
- end
27
-
28
- def self.prompt_user(context:)
29
- enable_automatic_tracking = CLI::UI::Prompt.ask(
30
- context.message("core.error_reporting.enable_automatic_reporting_prompt.question")
31
- ) do |handler|
32
- handler.option(context.message("core.error_reporting.enable_automatic_reporting_prompt.yes")) { |_| true }
33
- handler.option(context.message("core.error_reporting.enable_automatic_reporting_prompt.no")) { |_| false }
34
- end
35
-
36
- ShopifyCLI::Config.set(
37
- Constants::Config::Sections::ErrorTracking::NAME,
38
- Constants::Config::Sections::ErrorTracking::Fields::AUTOMATIC_REPORTING,
39
- enable_automatic_tracking
40
- )
41
-
42
- enable_automatic_tracking
43
- end
44
-
45
- def self.automatic_reporting_enabled?
46
- ShopifyCLI::Config.get_bool(
47
- Constants::Config::Sections::ErrorTracking::NAME,
48
- Constants::Config::Sections::ErrorTracking::Fields::AUTOMATIC_REPORTING,
49
- default: false
50
- )
51
- end
52
- end
53
- end
54
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
- require "shopify_cli"
3
-
4
- module ShopifyCLI
5
- class SubCommand < Command
6
- class << self
7
- def call(args, command_name, parent_command)
8
- cmd = new(@ctx)
9
- args = cmd.options.parse(@_options, args[1..-1] || [])
10
- return call_help(parent_command, command_name) if cmd.options.help
11
- run_prerequisites
12
-
13
- cmd.call(args, command_name)
14
- end
15
- end
16
- end
17
- end
data/shopify.fish DELETED
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env fish
2
- # vi: ft=fish
3
-
4
- # If we're not already in a shim environment but still tried to set up a shim, print out the re-installation warning
5
- type -t shopify > /dev/null 2>&1
6
- if [ $status != "0" ]
7
- echo "This version of Shopify CLI is no longer supported. You’ll need to migrate to the new CLI version to continue.
8
-
9
- Please visit this page for complete instructions:
10
- https://shopify.dev/tools/cli/troubleshooting#migrate-from-a-legacy-version
11
- "
12
- end
data/shopify.sh DELETED
@@ -1,11 +0,0 @@
1
- #!/bin/sh
2
-
3
- # If we're not already in a shim environment but still tried to set up a shim, print out the re-installation warning
4
- typeset -f shopify > /dev/null 2>&1
5
- if [ "$?" != "0" ]; then
6
- echo "This version of Shopify CLI is no longer supported. You’ll need to migrate to the new CLI version to continue.
7
-
8
- Please visit this page for complete instructions:
9
- https://shopify.dev/tools/cli/troubleshooting#migrate-from-a-legacy-version
10
- "
11
- fi