shopify-cli 1.4.0 → 1.7.1

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 (302) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +2 -2
  3. data/.github/CONTRIBUTING.md +9 -1
  4. data/.github/PULL_REQUEST_TEMPLATE.md +10 -1
  5. data/.github/workflows/release.yml +61 -0
  6. data/.github/workflows/triage.yml +22 -0
  7. data/.rubocop.yml +56 -7
  8. data/.rubocop_todo.yml +4 -13
  9. data/.travis.yml +1 -0
  10. data/CHANGELOG.md +27 -1
  11. data/Gemfile +12 -10
  12. data/Gemfile.lock +33 -31
  13. data/README.md +39 -7
  14. data/RELEASING.md +5 -27
  15. data/Rakefile +32 -28
  16. data/bin/load_shopify.rb +6 -6
  17. data/bin/shopify +2 -2
  18. data/dev.yml +2 -2
  19. data/docs/_config.yml +1 -18
  20. data/docs/app/node/commands/index.md +2 -80
  21. data/docs/app/node/index.md +2 -33
  22. data/docs/app/rails/commands/index.md +2 -78
  23. data/docs/app/rails/index.md +2 -34
  24. data/docs/core/index.md +2 -84
  25. data/docs/getting-started/index.md +2 -25
  26. data/docs/getting-started/install/index.md +1 -118
  27. data/docs/getting-started/migrate/index.md +2 -94
  28. data/docs/getting-started/uninstall/index.md +2 -35
  29. data/docs/getting-started/upgrade/index.md +2 -39
  30. data/docs/help/start-app/index.md +2 -4
  31. data/docs/index.md +2 -24
  32. data/ext/shopify-cli/extconf.rb +7 -7
  33. data/install.sh +1 -1
  34. data/lib/docgen/markdown.rb +11 -11
  35. data/lib/{project_types/extension/graphql → graphql}/get_app_by_api_key.graphql +0 -0
  36. data/lib/project_types/extension/cli.rb +64 -47
  37. data/lib/project_types/extension/commands/build.rb +3 -3
  38. data/lib/project_types/extension/commands/create.rb +16 -9
  39. data/lib/project_types/extension/commands/extension_command.rb +8 -5
  40. data/lib/project_types/extension/commands/push.rb +8 -8
  41. data/lib/project_types/extension/commands/register.rb +19 -30
  42. data/lib/project_types/extension/commands/serve.rb +23 -3
  43. data/lib/project_types/extension/commands/tunnel.rb +12 -12
  44. data/lib/project_types/extension/extension_project.rb +4 -4
  45. data/lib/project_types/extension/extension_project_keys.rb +4 -4
  46. data/lib/project_types/extension/features/argo.rb +117 -0
  47. data/lib/project_types/extension/features/argo_config.rb +5 -5
  48. data/lib/project_types/extension/features/argo_dependencies.rb +5 -5
  49. data/lib/project_types/extension/features/argo_setup.rb +2 -2
  50. data/lib/project_types/extension/features/argo_setup_steps.rb +4 -4
  51. data/lib/project_types/extension/forms/create.rb +28 -34
  52. data/lib/project_types/extension/forms/questions/ask_app.rb +53 -0
  53. data/lib/project_types/extension/forms/questions/ask_name.rb +40 -0
  54. data/lib/project_types/extension/forms/questions/ask_type.rb +36 -0
  55. data/lib/project_types/extension/messages/messages.rb +53 -52
  56. data/lib/project_types/extension/models/lazy_specification_handler.rb +12 -0
  57. data/lib/project_types/extension/models/specification.rb +35 -0
  58. data/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +19 -0
  59. data/lib/project_types/extension/models/specification_handlers/default.rb +67 -0
  60. data/lib/project_types/extension/models/specifications.rb +77 -0
  61. data/lib/project_types/extension/tasks/configure_features.rb +52 -0
  62. data/lib/project_types/extension/tasks/converters/app_converter.rb +6 -6
  63. data/lib/project_types/extension/tasks/converters/registration_converter.rb +6 -6
  64. data/lib/project_types/extension/tasks/converters/validation_error_converter.rb +4 -4
  65. data/lib/project_types/extension/tasks/converters/version_converter.rb +7 -7
  66. data/lib/project_types/extension/tasks/create_extension.rb +4 -4
  67. data/lib/project_types/extension/tasks/fetch_specifications.rb +38 -0
  68. data/lib/project_types/extension/tasks/get_app.rb +4 -4
  69. data/lib/project_types/extension/tasks/get_apps.rb +3 -3
  70. data/lib/project_types/extension/tasks/update_draft.rb +4 -4
  71. data/lib/project_types/extension/tasks/user_errors.rb +4 -4
  72. data/lib/project_types/node/cli.rb +19 -16
  73. data/lib/project_types/node/commands/connect.rb +15 -0
  74. data/lib/project_types/node/commands/create.rb +44 -41
  75. data/lib/project_types/node/commands/deploy.rb +4 -4
  76. data/lib/project_types/node/commands/deploy/heroku.rb +24 -24
  77. data/lib/project_types/node/commands/generate.rb +9 -18
  78. data/lib/project_types/node/commands/open.rb +2 -2
  79. data/lib/project_types/node/commands/populate.rb +6 -6
  80. data/lib/project_types/node/commands/populate/customer.rb +5 -5
  81. data/lib/project_types/node/commands/populate/draft_order.rb +5 -5
  82. data/lib/project_types/node/commands/populate/product.rb +5 -5
  83. data/lib/project_types/node/commands/serve.rb +9 -9
  84. data/lib/project_types/node/commands/tunnel.rb +7 -7
  85. data/lib/project_types/node/forms/create.rb +7 -7
  86. data/lib/project_types/node/messages/messages.rb +19 -53
  87. data/lib/project_types/rails/cli.rb +21 -18
  88. data/lib/project_types/rails/commands/connect.rb +15 -0
  89. data/lib/project_types/rails/commands/create.rb +58 -57
  90. data/lib/project_types/rails/commands/deploy.rb +4 -4
  91. data/lib/project_types/rails/commands/deploy/heroku.rb +30 -30
  92. data/lib/project_types/rails/commands/generate.rb +7 -7
  93. data/lib/project_types/rails/commands/generate/webhook.rb +6 -6
  94. data/lib/project_types/rails/commands/open.rb +2 -2
  95. data/lib/project_types/rails/commands/populate.rb +6 -6
  96. data/lib/project_types/rails/commands/populate/customer.rb +5 -5
  97. data/lib/project_types/rails/commands/populate/draft_order.rb +5 -5
  98. data/lib/project_types/rails/commands/populate/product.rb +5 -5
  99. data/lib/project_types/rails/commands/serve.rb +11 -11
  100. data/lib/project_types/rails/commands/tunnel.rb +7 -7
  101. data/lib/project_types/rails/forms/create.rb +24 -24
  102. data/lib/project_types/rails/gem.rb +24 -24
  103. data/lib/project_types/rails/messages/messages.rb +12 -9
  104. data/lib/project_types/rails/ruby.rb +2 -2
  105. data/lib/project_types/script/cli.rb +44 -38
  106. data/lib/project_types/script/commands/create.rb +15 -10
  107. data/lib/project_types/script/commands/disable.rb +3 -3
  108. data/lib/project_types/script/commands/enable.rb +19 -9
  109. data/lib/project_types/script/commands/push.rb +10 -17
  110. data/lib/project_types/script/config/extension_points.yml +17 -12
  111. data/lib/project_types/script/errors.rb +22 -0
  112. data/lib/project_types/script/forms/create.rb +29 -5
  113. data/lib/project_types/script/graphql/app_script_update_or_create.graphql +12 -1
  114. data/lib/project_types/script/layers/application/build_script.rb +19 -19
  115. data/lib/project_types/script/layers/application/create_script.rb +41 -12
  116. data/lib/project_types/script/layers/application/disable_script.rb +2 -2
  117. data/lib/project_types/script/layers/application/enable_script.rb +2 -2
  118. data/lib/project_types/script/layers/application/extension_points.rb +24 -0
  119. data/lib/project_types/script/layers/application/project_dependencies.rb +4 -4
  120. data/lib/project_types/script/layers/application/push_script.rb +15 -18
  121. data/lib/project_types/script/layers/domain/config_ui.rb +16 -0
  122. data/lib/project_types/script/layers/domain/errors.rb +23 -0
  123. data/lib/project_types/script/layers/domain/extension_point.rb +62 -7
  124. data/lib/project_types/script/layers/domain/metadata.rb +55 -0
  125. data/lib/project_types/script/layers/domain/push_package.rb +29 -6
  126. data/lib/project_types/script/layers/infrastructure/assemblyscript_project_creator.rb +19 -55
  127. data/lib/project_types/script/layers/infrastructure/assemblyscript_task_runner.rb +49 -18
  128. data/lib/project_types/script/layers/infrastructure/config_ui_repository.rb +46 -0
  129. data/lib/project_types/script/layers/infrastructure/errors.rb +37 -1
  130. data/lib/project_types/script/layers/infrastructure/extension_point_repository.rb +12 -6
  131. data/lib/project_types/script/layers/infrastructure/project_creator.rb +2 -1
  132. data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +20 -13
  133. data/lib/project_types/script/layers/infrastructure/rust_project_creator.rb +72 -0
  134. data/lib/project_types/script/layers/infrastructure/rust_task_runner.rb +59 -0
  135. data/lib/project_types/script/layers/infrastructure/script_service.rb +39 -17
  136. data/lib/project_types/script/layers/infrastructure/task_runner.rb +4 -3
  137. data/lib/project_types/script/messages/messages.rb +79 -10
  138. data/lib/project_types/script/script_project.rb +26 -16
  139. data/lib/project_types/script/ui/error_handler.rb +141 -45
  140. data/lib/project_types/script/ui/printing_spinner.rb +1 -1
  141. data/lib/project_types/script/ui/strict_spinner.rb +1 -1
  142. data/lib/project_types/theme/cli.rb +40 -0
  143. data/lib/project_types/theme/commands/connect.rb +54 -0
  144. data/lib/project_types/theme/commands/create.rb +48 -0
  145. data/lib/project_types/theme/commands/deploy.rb +38 -0
  146. data/lib/project_types/theme/commands/generate.rb +20 -0
  147. data/lib/project_types/theme/commands/generate/env.rb +79 -0
  148. data/lib/project_types/theme/commands/push.rb +55 -0
  149. data/lib/project_types/theme/commands/serve.rb +31 -0
  150. data/lib/project_types/theme/forms/connect.rb +34 -0
  151. data/lib/project_types/theme/forms/create.rb +22 -0
  152. data/lib/project_types/theme/messages/messages.rb +147 -0
  153. data/lib/project_types/theme/tasks/ensure_themekit_installed.rb +78 -0
  154. data/lib/project_types/theme/themekit.rb +113 -0
  155. data/lib/rubygems_plugin.rb +3 -3
  156. data/lib/shopify-cli/admin_api.rb +52 -12
  157. data/lib/shopify-cli/admin_api/populate_resource_command.rb +17 -17
  158. data/lib/shopify-cli/admin_api/schema.rb +3 -3
  159. data/lib/shopify-cli/api.rb +36 -31
  160. data/lib/shopify-cli/command.rb +1 -1
  161. data/lib/shopify-cli/commands.rb +9 -9
  162. data/lib/shopify-cli/commands/config.rb +28 -28
  163. data/lib/shopify-cli/commands/connect.rb +35 -18
  164. data/lib/shopify-cli/commands/create.rb +5 -5
  165. data/lib/shopify-cli/commands/help.rb +6 -6
  166. data/lib/shopify-cli/commands/logout.rb +3 -3
  167. data/lib/shopify-cli/commands/system.rb +33 -33
  168. data/lib/shopify-cli/commands/version.rb +2 -2
  169. data/lib/shopify-cli/context.rb +43 -22
  170. data/lib/shopify-cli/core.rb +4 -4
  171. data/lib/shopify-cli/core/entry_point.rb +5 -5
  172. data/lib/shopify-cli/core/executor.rb +1 -1
  173. data/lib/shopify-cli/core/help_resolver.rb +2 -2
  174. data/lib/shopify-cli/core/monorail.rb +21 -19
  175. data/lib/shopify-cli/db.rb +2 -2
  176. data/lib/shopify-cli/feature.rb +1 -3
  177. data/lib/shopify-cli/form.rb +1 -1
  178. data/lib/shopify-cli/git.rb +17 -17
  179. data/lib/shopify-cli/helpers.rb +1 -1
  180. data/lib/shopify-cli/helpers/haikunator.rb +1 -1
  181. data/lib/shopify-cli/heroku.rb +28 -28
  182. data/lib/shopify-cli/http_request.rb +21 -9
  183. data/lib/shopify-cli/js_deps.rb +13 -13
  184. data/lib/shopify-cli/js_system.rb +5 -5
  185. data/lib/shopify-cli/lazy_delegator.rb +55 -0
  186. data/lib/shopify-cli/messages/messages.rb +21 -10
  187. data/lib/shopify-cli/method_object.rb +104 -0
  188. data/lib/shopify-cli/oauth.rb +25 -25
  189. data/lib/shopify-cli/oauth/servlet.rb +9 -9
  190. data/lib/shopify-cli/options.rb +3 -3
  191. data/lib/shopify-cli/packager.rb +24 -24
  192. data/lib/shopify-cli/partners_api.rb +38 -16
  193. data/lib/shopify-cli/partners_api/organizations.rb +10 -10
  194. data/lib/shopify-cli/process_supervision.rb +8 -8
  195. data/lib/shopify-cli/project.rb +27 -23
  196. data/lib/shopify-cli/project_type.rb +21 -5
  197. data/lib/shopify-cli/resolve_constant.rb +25 -0
  198. data/lib/shopify-cli/resources.rb +1 -1
  199. data/lib/shopify-cli/resources/env_file.rb +9 -9
  200. data/lib/shopify-cli/result.rb +432 -0
  201. data/lib/shopify-cli/shopifolk.rb +35 -18
  202. data/lib/shopify-cli/sub_command.rb +1 -1
  203. data/lib/shopify-cli/task.rb +9 -1
  204. data/lib/shopify-cli/tasks.rb +7 -7
  205. data/lib/shopify-cli/tasks/create_api_client.rb +17 -6
  206. data/lib/shopify-cli/tasks/ensure_dev_store.rb +11 -11
  207. data/lib/shopify-cli/tasks/ensure_env.rb +18 -15
  208. data/lib/shopify-cli/tasks/ensure_loopback_url.rb +4 -4
  209. data/lib/shopify-cli/tasks/select_org_and_shop.rb +29 -24
  210. data/lib/shopify-cli/tasks/update_dashboard_urls.rb +10 -10
  211. data/lib/shopify-cli/transform_data_structure.rb +86 -0
  212. data/lib/shopify-cli/tunnel.rb +36 -30
  213. data/lib/shopify-cli/version.rb +1 -1
  214. data/lib/shopify_cli.rb +57 -52
  215. data/shopify-cli.gemspec +6 -6
  216. data/shopify.fish +1 -1
  217. data/shopify.sh +1 -1
  218. data/vendor/deps/cli-kit/REVISION +1 -1
  219. data/vendor/deps/cli-kit/lib/cli/kit/logger.rb +2 -2
  220. data/vendor/deps/cli-kit/lib/cli/kit/system.rb +3 -3
  221. data/vendor/deps/cli-ui/REVISION +1 -1
  222. data/vendor/deps/cli-ui/lib/cli/ui.rb +26 -22
  223. data/vendor/deps/cli-ui/lib/cli/ui/ansi.rb +4 -6
  224. data/vendor/deps/cli-ui/lib/cli/ui/frame.rb +3 -3
  225. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_stack.rb +8 -9
  226. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style.rb +1 -1
  227. data/vendor/deps/cli-ui/lib/cli/ui/glyph.rb +1 -0
  228. data/vendor/deps/cli-ui/lib/cli/ui/printer.rb +15 -3
  229. data/vendor/deps/cli-ui/lib/cli/ui/prompt/interactive_options.rb +4 -11
  230. data/vendor/deps/cli-ui/lib/cli/ui/spinner.rb +3 -5
  231. data/vendor/deps/cli-ui/lib/cli/ui/terminal.rb +10 -10
  232. data/vendor/deps/cli-ui/lib/cli/ui/version.rb +1 -1
  233. data/vendor/deps/cli-ui/lib/cli/ui/wrap.rb +56 -0
  234. data/vendor/deps/webrick/.gitignore +9 -0
  235. data/vendor/deps/webrick/Gemfile +3 -0
  236. data/vendor/deps/webrick/LICENSE.txt +22 -0
  237. data/vendor/deps/webrick/README.md +61 -0
  238. data/vendor/deps/webrick/Rakefile +10 -0
  239. data/vendor/deps/webrick/lib/webrick.rb +232 -0
  240. data/vendor/deps/webrick/lib/webrick/accesslog.rb +157 -0
  241. data/vendor/deps/webrick/lib/webrick/cgi.rb +313 -0
  242. data/vendor/deps/webrick/lib/webrick/compat.rb +36 -0
  243. data/vendor/deps/webrick/lib/webrick/config.rb +158 -0
  244. data/vendor/deps/webrick/lib/webrick/cookie.rb +172 -0
  245. data/vendor/deps/webrick/lib/webrick/htmlutils.rb +30 -0
  246. data/vendor/deps/webrick/lib/webrick/httpauth.rb +96 -0
  247. data/vendor/deps/webrick/lib/webrick/httpauth/authenticator.rb +117 -0
  248. data/vendor/deps/webrick/lib/webrick/httpauth/basicauth.rb +116 -0
  249. data/vendor/deps/webrick/lib/webrick/httpauth/digestauth.rb +395 -0
  250. data/vendor/deps/webrick/lib/webrick/httpauth/htdigest.rb +132 -0
  251. data/vendor/deps/webrick/lib/webrick/httpauth/htgroup.rb +97 -0
  252. data/vendor/deps/webrick/lib/webrick/httpauth/htpasswd.rb +158 -0
  253. data/vendor/deps/webrick/lib/webrick/httpauth/userdb.rb +53 -0
  254. data/vendor/deps/webrick/lib/webrick/httpproxy.rb +354 -0
  255. data/vendor/deps/webrick/lib/webrick/httprequest.rb +636 -0
  256. data/vendor/deps/webrick/lib/webrick/httpresponse.rb +564 -0
  257. data/vendor/deps/webrick/lib/webrick/https.rb +152 -0
  258. data/vendor/deps/webrick/lib/webrick/httpserver.rb +294 -0
  259. data/vendor/deps/webrick/lib/webrick/httpservlet.rb +23 -0
  260. data/vendor/deps/webrick/lib/webrick/httpservlet/abstract.rb +152 -0
  261. data/vendor/deps/webrick/lib/webrick/httpservlet/cgi_runner.rb +47 -0
  262. data/vendor/deps/webrick/lib/webrick/httpservlet/cgihandler.rb +126 -0
  263. data/vendor/deps/webrick/lib/webrick/httpservlet/erbhandler.rb +88 -0
  264. data/vendor/deps/webrick/lib/webrick/httpservlet/filehandler.rb +552 -0
  265. data/vendor/deps/webrick/lib/webrick/httpservlet/prochandler.rb +47 -0
  266. data/vendor/deps/webrick/lib/webrick/httpstatus.rb +194 -0
  267. data/vendor/deps/webrick/lib/webrick/httputils.rb +512 -0
  268. data/vendor/deps/webrick/lib/webrick/httpversion.rb +76 -0
  269. data/vendor/deps/webrick/lib/webrick/log.rb +156 -0
  270. data/vendor/deps/webrick/lib/webrick/server.rb +381 -0
  271. data/vendor/deps/webrick/lib/webrick/ssl.rb +215 -0
  272. data/vendor/deps/webrick/lib/webrick/utils.rb +265 -0
  273. data/vendor/deps/webrick/lib/webrick/version.rb +18 -0
  274. data/vendor/deps/webrick/webrick.gemspec +74 -0
  275. data/vendor/gen/template/bin/update-deps +9 -9
  276. metadata +83 -29
  277. data/docs/Gemfile +0 -5
  278. data/docs/Gemfile.lock +0 -258
  279. data/docs/_data/nav.yml +0 -35
  280. data/docs/_includes/footer.html +0 -15
  281. data/docs/_includes/head.html +0 -19
  282. data/docs/_includes/sidebar_nav.html +0 -22
  283. data/docs/_includes/toc.html +0 -112
  284. data/docs/_layouts/default.html +0 -79
  285. data/docs/css/docs.css +0 -157
  286. data/docs/images/header.png +0 -0
  287. data/docs/installing-ruby.md +0 -28
  288. data/lib/project_types/extension/features/argo/admin.rb +0 -20
  289. data/lib/project_types/extension/features/argo/base.rb +0 -129
  290. data/lib/project_types/extension/features/argo/checkout.rb +0 -20
  291. data/lib/project_types/extension/forms/register.rb +0 -47
  292. data/lib/project_types/extension/models/type.rb +0 -81
  293. data/lib/project_types/extension/models/types/checkout_post_purchase.rb +0 -23
  294. data/lib/project_types/extension/models/types/product_subscription.rb +0 -24
  295. data/lib/project_types/node/commands/generate/billing.rb +0 -39
  296. data/lib/project_types/node/commands/generate/page.rb +0 -59
  297. data/lib/project_types/node/commands/generate/webhook.rb +0 -37
  298. data/lib/project_types/script/layers/domain/script.rb +0 -18
  299. data/lib/project_types/script/layers/infrastructure/assemblyscript_tsconfig.rb +0 -38
  300. data/lib/project_types/script/layers/infrastructure/script_repository.rb +0 -59
  301. data/lib/project_types/script/templates/ts/as-pect.config.js +0 -27
  302. data/lib/project_types/script/templates/ts/as-pect.d.ts +0 -1
@@ -1,4 +1,4 @@
1
- require 'shopify_cli'
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('core.create.error.invalid_app_type', args[0]))
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('core.create.project_type_select')) do |handler|
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, 'create')
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('core.create.help', ShopifyCli::TOOL_NAME, project_types)
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 'shopify_cli'
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 != 'help'
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('core.help.error.command_not_found', command))
19
+ @ctx.puts(@ctx.message("core.help.error.command_not_found", command))
20
20
  end
21
21
  end
22
22
 
23
- preamble = @ctx.message('core.help.preamble', ShopifyCli::TOOL_NAME)
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 == 'help'
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 == 'help'
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 'shopify_cli'
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('core.logout.success'))
15
+ @ctx.puts(@ctx.message("core.logout.success"))
16
16
  end
17
17
 
18
18
  def self.help
19
- ShopifyCli::Context.message('core.logout.help', ShopifyCli::TOOL_NAME)
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 'shopify_cli'
2
- require 'rbconfig'
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 != 'all'
13
- @ctx.puts(@ctx.message('core.system.error.unknown_option', flag))
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 == 'all'
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('core.system.help', ShopifyCli::TOOL_NAME)
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('core.system.header'))
50
+ @ctx.puts(@ctx.message("core.system.header"))
51
51
  cli_constants.each do |s|
52
- @ctx.puts(" " + @ctx.message('core.system.const', s, ShopifyCli.const_get(s.to_sym)) + "\n")
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('core.system.const', m.upcase, ShopifyCli.send(m)) + "\n")
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('core.system.ruby_header', RbConfig.ruby))
65
+ @ctx.puts("\n" + @ctx.message("core.system.ruby_header", RbConfig.ruby))
66
66
  rbconfig_constants.each do |s|
67
- @ctx.puts(" " + @ctx.message('core.system.rb_config', RbConfig::CONFIG[s], s))
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('core.system.command_header'))
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('core.system.command_with_path', s, cmd_path))
79
+ @ctx.puts(" " + @ctx.message("core.system.command_with_path", s, cmd_path))
80
80
  else
81
- @ctx.puts(" " + @ctx.message('core.system.command_not_found', s))
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.windows? ? 'ngrok.exe' : 'ngrok')
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('core.system.ngrok_available', ngrok_location))
89
+ @ctx.puts(" " + @ctx.message("core.system.ngrok_available", ngrok_location))
90
90
  else
91
- @ctx.puts(" " + @ctx.message('core.system.ngrok_not_available'))
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('Node.js', %w(npm node yarn))
98
+ display_project("Node.js", %w(npm node yarn))
99
99
  when :rails
100
- display_project('Rails', %w(gem rails rake ruby))
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('core.system.project.header', project_type))
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, '--version')
109
+ version_output, _ = @ctx.capture2e(s, "--version")
110
110
  version = version_output.match(/(\d+\.[^\s]+)/)[0]
111
- @ctx.puts(" " + @ctx.message('core.system.project.command_with_path', s, cmd_path.strip, version.strip))
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('core.system.project.command_not_found', s))
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('core.system.project.env_header'))
122
- if File.exist?('./.env')
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('core.system.project.env_not_set')
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('core.system.project.env', k, display_value))
129
+ @ctx.puts(" " + @ctx.message("core.system.project.env", k, display_value))
130
130
  end
131
131
  else
132
- @ctx.puts(" " + @ctx.message('core.system.project.no_env'))
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('core.system.environment_header'))
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('core.system.env', k, ENV[k])) unless ENV[k].nil?
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('core.system.identity_header'))
148
- @ctx.puts(" " + @ctx.message('core.system.identity_is_shopifolk'))
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 'shopify_cli'
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('core.version.help', ShopifyCli::TOOL_NAME)
7
+ ShopifyCli::Context.message("core.version.help", ShopifyCli::TOOL_NAME)
8
8
  end
9
9
 
10
10
  def call(_args, _name)
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
- require 'shopify_cli'
3
- require 'fileutils'
4
- require 'rbconfig'
5
- require 'net/http'
6
- require 'json'
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('https://rubygems.org/api/v1/versions/shopify-cli/latest.json')
17
- VERSION_CHECK_SECTION = 'versioncheck'
18
- LAST_CHECKED_AT_FIELD = 'last_checked_at'
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('.').map(&:to_sym)
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, 'test'))
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['TEST']
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['CI']
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 == '' ? nil : v
119
+ v == "" ? nil : v
120
120
  end
121
121
 
122
122
  # set a environment variable value by name.
@@ -254,7 +254,7 @@ module ShopifyCli
254
254
  # * `uri` - a http URI to open in a browser
255
255
  #
256
256
  def open_url!(uri)
257
- help = message('core.context.open_url', uri)
257
+ help = message("core.context.open_url", uri)
258
258
  puts(help)
259
259
  end
260
260
 
@@ -303,7 +303,7 @@ module ShopifyCli
303
303
  # * `text` - a string message to output
304
304
  #
305
305
  def debug(text)
306
- puts("{{red:DEBUG}} #{text}") if getenv('DEBUG')
306
+ puts("{{red:DEBUG}} #{text}") if getenv("DEBUG")
307
307
  end
308
308
 
309
309
  # proxy call to Context.message.
@@ -329,14 +329,18 @@ module ShopifyCli
329
329
  # - `**kwargs`: additional keyword arguments to pass to Process.spawn
330
330
  #
331
331
  # #### Returns
332
- # - `status`: boolean success status of the command execution
332
+ # - `status`: The `Process::Status` result of the command execution.
333
333
  #
334
334
  # #### Usage
335
335
  #
336
336
  # stat = @ctx.system('ls', 'a_folder')
337
337
  #
338
338
  def system(*args, **kwargs)
339
- CLI::Kit::System.system(*args, env: @env, **kwargs)
339
+ process_status = CLI::Kit::System.system(*args, env: @env, **kwargs)
340
+ unless process_status.success?
341
+ abort("System call failed: #{args.join(" ")}")
342
+ end
343
+ process_status
340
344
  end
341
345
 
342
346
  # Execute a command in the user's environment
@@ -410,13 +414,13 @@ module ShopifyCli
410
414
  #
411
415
  def on_siginfo
412
416
  # Reset any previous SIGINFO handling we had so the only action we take is the given block
413
- trap('INFO', 'DEFAULT')
417
+ trap("INFO", "DEFAULT")
414
418
 
415
419
  fork do
416
420
  begin
417
421
  r, w = IO.pipe
418
422
  @signal = false
419
- trap('SIGINFO') do
423
+ trap("SIGINFO") do
420
424
  @signal = true
421
425
  w.write(0)
422
426
  end
@@ -442,8 +446,8 @@ module ShopifyCli
442
446
  # @todo This is currently a duplicate of CLI::Kit::System.which() - we should make that method public when we make
443
447
  # Kit changes and make this a wrapper instead.
444
448
  def which(cmd)
445
- exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
446
- ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
449
+ exts = ENV["PATHEXT"] ? ENV["PATHEXT"].split(";") : [""]
450
+ ENV["PATH"].split(File::PATH_SEPARATOR).each do |path|
447
451
  exts.each do |ext|
448
452
  exe = File.join(File.expand_path(path), "#{cmd}#{ext}")
449
453
  return exe if File.executable?(exe) && !File.directory?(exe)
@@ -470,10 +474,27 @@ module ShopifyCli
470
474
  end
471
475
  end
472
476
 
477
+ # Returns file extension depending on OS
478
+ # since windows has multiple extensions, the default is .exe unless otherwise specified
479
+ #
480
+ # #### Parameters
481
+ # - ext: optional extension for windows file
482
+ #
483
+ # #### Returns
484
+ # - ext: string for file extension on windows
485
+ # : empty string otherwise
486
+ def executable_file_extension(ext = ".exe")
487
+ if windows?
488
+ ext
489
+ else
490
+ ""
491
+ end
492
+ end
493
+
473
494
  private
474
495
 
475
496
  def ctx_path(fname)
476
- require 'pathname'
497
+ require "pathname"
477
498
  if Pathname.new(fname).absolute?
478
499
  fname
479
500
  else
@@ -1,8 +1,8 @@
1
1
  module ShopifyCli
2
2
  module Core
3
- autoload :EntryPoint, 'shopify-cli/core/entry_point'
4
- autoload :Executor, 'shopify-cli/core/executor'
5
- autoload :HelpResolver, 'shopify-cli/core/help_resolver'
6
- autoload :Monorail, 'shopify-cli/core/monorail'
3
+ autoload :EntryPoint, "shopify-cli/core/entry_point"
4
+ autoload :Executor, "shopify-cli/core/executor"
5
+ autoload :HelpResolver, "shopify-cli/core/help_resolver"
6
+ autoload :Monorail, "shopify-cli/core/monorail"
7
7
  end
8
8
  end