shopify-cli 1.4.1 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (303) 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 +3 -2
  5. data/.github/workflows/release.yml +0 -1
  6. data/.github/workflows/triage.yml +22 -0
  7. data/.rubocop.yml +21 -7
  8. data/.rubocop_todo.yml +2 -15
  9. data/.travis.yml +1 -1
  10. data/CHANGELOG.md +28 -0
  11. data/Gemfile +12 -11
  12. data/Gemfile.lock +17 -14
  13. data/README.md +39 -7
  14. data/RELEASING.md +5 -13
  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 +12 -12
  35. data/lib/graphql/fetch_specifications.graphql +14 -0
  36. data/lib/{project_types/extension/graphql → graphql}/get_app_by_api_key.graphql +0 -0
  37. data/lib/project_types/extension/cli.rb +54 -47
  38. data/lib/project_types/extension/commands/build.rb +3 -3
  39. data/lib/project_types/extension/commands/create.rb +17 -10
  40. data/lib/project_types/extension/commands/extension_command.rb +12 -5
  41. data/lib/project_types/extension/commands/push.rb +8 -8
  42. data/lib/project_types/extension/commands/register.rb +19 -30
  43. data/lib/project_types/extension/commands/serve.rb +31 -3
  44. data/lib/project_types/extension/commands/tunnel.rb +12 -12
  45. data/lib/project_types/extension/extension_project.rb +8 -4
  46. data/lib/project_types/extension/extension_project_keys.rb +4 -4
  47. data/lib/project_types/extension/features/argo.rb +117 -0
  48. data/lib/project_types/extension/features/argo_config.rb +5 -5
  49. data/lib/project_types/extension/features/argo_dependencies.rb +5 -5
  50. data/lib/project_types/extension/features/argo_setup.rb +2 -2
  51. data/lib/project_types/extension/features/argo_setup_steps.rb +4 -4
  52. data/lib/project_types/extension/forms/create.rb +28 -34
  53. data/lib/project_types/extension/forms/questions/ask_app.rb +53 -0
  54. data/lib/project_types/extension/forms/questions/ask_name.rb +40 -0
  55. data/lib/project_types/extension/forms/questions/ask_type.rb +47 -0
  56. data/lib/project_types/extension/messages/messages.rb +55 -52
  57. data/lib/project_types/extension/models/lazy_specification_handler.rb +12 -0
  58. data/lib/project_types/extension/models/specification.rb +37 -0
  59. data/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +19 -0
  60. data/lib/project_types/extension/models/specification_handlers/default.rb +67 -0
  61. data/lib/project_types/extension/models/specifications.rb +88 -0
  62. data/lib/project_types/extension/tasks/configure_features.rb +52 -0
  63. data/lib/project_types/extension/tasks/converters/app_converter.rb +6 -6
  64. data/lib/project_types/extension/tasks/converters/registration_converter.rb +6 -6
  65. data/lib/project_types/extension/tasks/converters/validation_error_converter.rb +4 -4
  66. data/lib/project_types/extension/tasks/converters/version_converter.rb +7 -7
  67. data/lib/project_types/extension/tasks/create_extension.rb +4 -4
  68. data/lib/project_types/extension/tasks/fetch_specifications.rb +18 -0
  69. data/lib/project_types/extension/tasks/get_app.rb +4 -4
  70. data/lib/project_types/extension/tasks/get_apps.rb +3 -3
  71. data/lib/project_types/extension/tasks/update_draft.rb +4 -4
  72. data/lib/project_types/extension/tasks/user_errors.rb +4 -4
  73. data/lib/project_types/node/cli.rb +19 -16
  74. data/lib/project_types/node/commands/connect.rb +15 -0
  75. data/lib/project_types/node/commands/create.rb +44 -41
  76. data/lib/project_types/node/commands/deploy.rb +4 -4
  77. data/lib/project_types/node/commands/deploy/heroku.rb +24 -24
  78. data/lib/project_types/node/commands/generate.rb +9 -18
  79. data/lib/project_types/node/commands/open.rb +2 -2
  80. data/lib/project_types/node/commands/populate.rb +6 -6
  81. data/lib/project_types/node/commands/populate/customer.rb +5 -5
  82. data/lib/project_types/node/commands/populate/draft_order.rb +5 -5
  83. data/lib/project_types/node/commands/populate/product.rb +5 -5
  84. data/lib/project_types/node/commands/serve.rb +9 -9
  85. data/lib/project_types/node/commands/tunnel.rb +7 -7
  86. data/lib/project_types/node/forms/create.rb +17 -8
  87. data/lib/project_types/node/messages/messages.rb +20 -53
  88. data/lib/project_types/rails/cli.rb +21 -18
  89. data/lib/project_types/rails/commands/connect.rb +15 -0
  90. data/lib/project_types/rails/commands/create.rb +58 -57
  91. data/lib/project_types/rails/commands/deploy.rb +4 -4
  92. data/lib/project_types/rails/commands/deploy/heroku.rb +30 -30
  93. data/lib/project_types/rails/commands/generate.rb +7 -7
  94. data/lib/project_types/rails/commands/generate/webhook.rb +6 -6
  95. data/lib/project_types/rails/commands/open.rb +2 -2
  96. data/lib/project_types/rails/commands/populate.rb +6 -6
  97. data/lib/project_types/rails/commands/populate/customer.rb +5 -5
  98. data/lib/project_types/rails/commands/populate/draft_order.rb +5 -5
  99. data/lib/project_types/rails/commands/populate/product.rb +5 -5
  100. data/lib/project_types/rails/commands/serve.rb +11 -11
  101. data/lib/project_types/rails/commands/tunnel.rb +7 -7
  102. data/lib/project_types/rails/forms/create.rb +35 -25
  103. data/lib/project_types/rails/gem.rb +24 -24
  104. data/lib/project_types/rails/messages/messages.rb +13 -9
  105. data/lib/project_types/rails/ruby.rb +2 -2
  106. data/lib/project_types/script/cli.rb +44 -38
  107. data/lib/project_types/script/commands/create.rb +15 -10
  108. data/lib/project_types/script/commands/disable.rb +3 -3
  109. data/lib/project_types/script/commands/enable.rb +19 -9
  110. data/lib/project_types/script/commands/push.rb +10 -17
  111. data/lib/project_types/script/config/extension_points.yml +30 -12
  112. data/lib/project_types/script/errors.rb +22 -0
  113. data/lib/project_types/script/forms/create.rb +29 -5
  114. data/lib/project_types/script/graphql/app_script_update_or_create.graphql +12 -1
  115. data/lib/project_types/script/layers/application/build_script.rb +19 -19
  116. data/lib/project_types/script/layers/application/create_script.rb +45 -12
  117. data/lib/project_types/script/layers/application/disable_script.rb +2 -2
  118. data/lib/project_types/script/layers/application/enable_script.rb +2 -2
  119. data/lib/project_types/script/layers/application/extension_points.rb +24 -0
  120. data/lib/project_types/script/layers/application/project_dependencies.rb +4 -4
  121. data/lib/project_types/script/layers/application/push_script.rb +15 -18
  122. data/lib/project_types/script/layers/domain/config_ui.rb +16 -0
  123. data/lib/project_types/script/layers/domain/errors.rb +23 -0
  124. data/lib/project_types/script/layers/domain/extension_point.rb +67 -7
  125. data/lib/project_types/script/layers/domain/metadata.rb +55 -0
  126. data/lib/project_types/script/layers/domain/push_package.rb +29 -6
  127. data/lib/project_types/script/layers/infrastructure/assemblyscript_project_creator.rb +45 -55
  128. data/lib/project_types/script/layers/infrastructure/assemblyscript_task_runner.rb +41 -45
  129. data/lib/project_types/script/layers/infrastructure/config_ui_repository.rb +46 -0
  130. data/lib/project_types/script/layers/infrastructure/errors.rb +32 -5
  131. data/lib/project_types/script/layers/infrastructure/extension_point_repository.rb +12 -6
  132. data/lib/project_types/script/layers/infrastructure/project_creator.rb +2 -1
  133. data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +20 -13
  134. data/lib/project_types/script/layers/infrastructure/rust_project_creator.rb +72 -0
  135. data/lib/project_types/script/layers/infrastructure/rust_task_runner.rb +59 -0
  136. data/lib/project_types/script/layers/infrastructure/script_service.rb +39 -17
  137. data/lib/project_types/script/layers/infrastructure/task_runner.rb +4 -3
  138. data/lib/project_types/script/messages/messages.rb +76 -10
  139. data/lib/project_types/script/script_project.rb +26 -16
  140. data/lib/project_types/script/ui/error_handler.rb +135 -50
  141. data/lib/project_types/script/ui/printing_spinner.rb +1 -1
  142. data/lib/project_types/script/ui/strict_spinner.rb +1 -1
  143. data/lib/project_types/theme/cli.rb +40 -0
  144. data/lib/project_types/theme/commands/connect.rb +54 -0
  145. data/lib/project_types/theme/commands/create.rb +48 -0
  146. data/lib/project_types/theme/commands/deploy.rb +38 -0
  147. data/lib/project_types/theme/commands/generate.rb +20 -0
  148. data/lib/project_types/theme/commands/generate/env.rb +79 -0
  149. data/lib/project_types/theme/commands/push.rb +55 -0
  150. data/lib/project_types/theme/commands/serve.rb +31 -0
  151. data/lib/project_types/theme/forms/connect.rb +34 -0
  152. data/lib/project_types/theme/forms/create.rb +22 -0
  153. data/lib/project_types/theme/messages/messages.rb +147 -0
  154. data/lib/project_types/theme/tasks/ensure_themekit_installed.rb +78 -0
  155. data/lib/project_types/theme/themekit.rb +113 -0
  156. data/lib/rubygems_plugin.rb +3 -3
  157. data/lib/shopify-cli/admin_api.rb +52 -12
  158. data/lib/shopify-cli/admin_api/populate_resource_command.rb +17 -17
  159. data/lib/shopify-cli/admin_api/schema.rb +3 -3
  160. data/lib/shopify-cli/api.rb +36 -31
  161. data/lib/shopify-cli/command.rb +1 -1
  162. data/lib/shopify-cli/commands.rb +9 -9
  163. data/lib/shopify-cli/commands/config.rb +28 -28
  164. data/lib/shopify-cli/commands/connect.rb +35 -18
  165. data/lib/shopify-cli/commands/create.rb +5 -5
  166. data/lib/shopify-cli/commands/help.rb +6 -6
  167. data/lib/shopify-cli/commands/logout.rb +3 -3
  168. data/lib/shopify-cli/commands/system.rb +33 -33
  169. data/lib/shopify-cli/commands/version.rb +2 -2
  170. data/lib/shopify-cli/context.rb +43 -22
  171. data/lib/shopify-cli/core.rb +4 -4
  172. data/lib/shopify-cli/core/entry_point.rb +5 -5
  173. data/lib/shopify-cli/core/executor.rb +1 -1
  174. data/lib/shopify-cli/core/help_resolver.rb +2 -2
  175. data/lib/shopify-cli/core/monorail.rb +17 -16
  176. data/lib/shopify-cli/db.rb +2 -2
  177. data/lib/shopify-cli/feature.rb +1 -3
  178. data/lib/shopify-cli/form.rb +1 -1
  179. data/lib/shopify-cli/git.rb +17 -17
  180. data/lib/shopify-cli/helpers.rb +1 -1
  181. data/lib/shopify-cli/helpers/haikunator.rb +1 -1
  182. data/lib/shopify-cli/heroku.rb +28 -28
  183. data/lib/shopify-cli/http_request.rb +21 -9
  184. data/lib/shopify-cli/js_deps.rb +13 -13
  185. data/lib/shopify-cli/js_system.rb +5 -5
  186. data/lib/shopify-cli/lazy_delegator.rb +55 -0
  187. data/lib/shopify-cli/messages/messages.rb +21 -10
  188. data/lib/shopify-cli/method_object.rb +104 -0
  189. data/lib/shopify-cli/oauth.rb +25 -25
  190. data/lib/shopify-cli/oauth/servlet.rb +9 -9
  191. data/lib/shopify-cli/options.rb +3 -3
  192. data/lib/shopify-cli/packager.rb +24 -24
  193. data/lib/shopify-cli/partners_api.rb +38 -16
  194. data/lib/shopify-cli/partners_api/organizations.rb +10 -10
  195. data/lib/shopify-cli/process_supervision.rb +8 -8
  196. data/lib/shopify-cli/project.rb +27 -23
  197. data/lib/shopify-cli/project_type.rb +21 -5
  198. data/lib/shopify-cli/resolve_constant.rb +25 -0
  199. data/lib/shopify-cli/resources.rb +1 -1
  200. data/lib/shopify-cli/resources/env_file.rb +9 -9
  201. data/lib/shopify-cli/result.rb +432 -0
  202. data/lib/shopify-cli/shopifolk.rb +35 -18
  203. data/lib/shopify-cli/sub_command.rb +1 -1
  204. data/lib/shopify-cli/task.rb +9 -1
  205. data/lib/shopify-cli/tasks.rb +7 -7
  206. data/lib/shopify-cli/tasks/create_api_client.rb +13 -4
  207. data/lib/shopify-cli/tasks/ensure_dev_store.rb +12 -12
  208. data/lib/shopify-cli/tasks/ensure_env.rb +18 -15
  209. data/lib/shopify-cli/tasks/ensure_loopback_url.rb +4 -4
  210. data/lib/shopify-cli/tasks/select_org_and_shop.rb +28 -24
  211. data/lib/shopify-cli/tasks/update_dashboard_urls.rb +10 -10
  212. data/lib/shopify-cli/transform_data_structure.rb +86 -0
  213. data/lib/shopify-cli/tunnel.rb +36 -30
  214. data/lib/shopify-cli/version.rb +1 -1
  215. data/lib/shopify_cli.rb +57 -52
  216. data/shopify-cli.gemspec +6 -6
  217. data/shopify.fish +1 -1
  218. data/shopify.sh +1 -1
  219. data/vendor/deps/cli-kit/REVISION +1 -1
  220. data/vendor/deps/cli-kit/lib/cli/kit/logger.rb +2 -2
  221. data/vendor/deps/cli-kit/lib/cli/kit/system.rb +3 -3
  222. data/vendor/deps/cli-ui/REVISION +1 -1
  223. data/vendor/deps/cli-ui/lib/cli/ui.rb +26 -22
  224. data/vendor/deps/cli-ui/lib/cli/ui/ansi.rb +4 -6
  225. data/vendor/deps/cli-ui/lib/cli/ui/frame.rb +3 -3
  226. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_stack.rb +8 -9
  227. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style.rb +1 -1
  228. data/vendor/deps/cli-ui/lib/cli/ui/glyph.rb +1 -0
  229. data/vendor/deps/cli-ui/lib/cli/ui/printer.rb +15 -3
  230. data/vendor/deps/cli-ui/lib/cli/ui/prompt/interactive_options.rb +4 -11
  231. data/vendor/deps/cli-ui/lib/cli/ui/spinner.rb +3 -5
  232. data/vendor/deps/cli-ui/lib/cli/ui/terminal.rb +10 -10
  233. data/vendor/deps/cli-ui/lib/cli/ui/version.rb +1 -1
  234. data/vendor/deps/cli-ui/lib/cli/ui/wrap.rb +56 -0
  235. data/vendor/deps/webrick/.gitignore +9 -0
  236. data/vendor/deps/webrick/Gemfile +3 -0
  237. data/vendor/deps/webrick/LICENSE.txt +22 -0
  238. data/vendor/deps/webrick/README.md +61 -0
  239. data/vendor/deps/webrick/Rakefile +10 -0
  240. data/vendor/deps/webrick/lib/webrick.rb +232 -0
  241. data/vendor/deps/webrick/lib/webrick/accesslog.rb +157 -0
  242. data/vendor/deps/webrick/lib/webrick/cgi.rb +313 -0
  243. data/vendor/deps/webrick/lib/webrick/compat.rb +36 -0
  244. data/vendor/deps/webrick/lib/webrick/config.rb +158 -0
  245. data/vendor/deps/webrick/lib/webrick/cookie.rb +172 -0
  246. data/vendor/deps/webrick/lib/webrick/htmlutils.rb +30 -0
  247. data/vendor/deps/webrick/lib/webrick/httpauth.rb +96 -0
  248. data/vendor/deps/webrick/lib/webrick/httpauth/authenticator.rb +117 -0
  249. data/vendor/deps/webrick/lib/webrick/httpauth/basicauth.rb +116 -0
  250. data/vendor/deps/webrick/lib/webrick/httpauth/digestauth.rb +395 -0
  251. data/vendor/deps/webrick/lib/webrick/httpauth/htdigest.rb +132 -0
  252. data/vendor/deps/webrick/lib/webrick/httpauth/htgroup.rb +97 -0
  253. data/vendor/deps/webrick/lib/webrick/httpauth/htpasswd.rb +158 -0
  254. data/vendor/deps/webrick/lib/webrick/httpauth/userdb.rb +53 -0
  255. data/vendor/deps/webrick/lib/webrick/httpproxy.rb +354 -0
  256. data/vendor/deps/webrick/lib/webrick/httprequest.rb +636 -0
  257. data/vendor/deps/webrick/lib/webrick/httpresponse.rb +564 -0
  258. data/vendor/deps/webrick/lib/webrick/https.rb +152 -0
  259. data/vendor/deps/webrick/lib/webrick/httpserver.rb +294 -0
  260. data/vendor/deps/webrick/lib/webrick/httpservlet.rb +23 -0
  261. data/vendor/deps/webrick/lib/webrick/httpservlet/abstract.rb +152 -0
  262. data/vendor/deps/webrick/lib/webrick/httpservlet/cgi_runner.rb +47 -0
  263. data/vendor/deps/webrick/lib/webrick/httpservlet/cgihandler.rb +126 -0
  264. data/vendor/deps/webrick/lib/webrick/httpservlet/erbhandler.rb +88 -0
  265. data/vendor/deps/webrick/lib/webrick/httpservlet/filehandler.rb +552 -0
  266. data/vendor/deps/webrick/lib/webrick/httpservlet/prochandler.rb +47 -0
  267. data/vendor/deps/webrick/lib/webrick/httpstatus.rb +194 -0
  268. data/vendor/deps/webrick/lib/webrick/httputils.rb +512 -0
  269. data/vendor/deps/webrick/lib/webrick/httpversion.rb +76 -0
  270. data/vendor/deps/webrick/lib/webrick/log.rb +156 -0
  271. data/vendor/deps/webrick/lib/webrick/server.rb +381 -0
  272. data/vendor/deps/webrick/lib/webrick/ssl.rb +215 -0
  273. data/vendor/deps/webrick/lib/webrick/utils.rb +265 -0
  274. data/vendor/deps/webrick/lib/webrick/version.rb +18 -0
  275. data/vendor/deps/webrick/webrick.gemspec +74 -0
  276. data/vendor/gen/template/bin/update-deps +9 -9
  277. metadata +83 -29
  278. data/docs/Gemfile +0 -5
  279. data/docs/Gemfile.lock +0 -258
  280. data/docs/_data/nav.yml +0 -35
  281. data/docs/_includes/footer.html +0 -15
  282. data/docs/_includes/head.html +0 -19
  283. data/docs/_includes/sidebar_nav.html +0 -22
  284. data/docs/_includes/toc.html +0 -112
  285. data/docs/_layouts/default.html +0 -79
  286. data/docs/css/docs.css +0 -157
  287. data/docs/images/header.png +0 -0
  288. data/docs/installing-ruby.md +0 -28
  289. data/lib/project_types/extension/features/argo/admin.rb +0 -20
  290. data/lib/project_types/extension/features/argo/base.rb +0 -129
  291. data/lib/project_types/extension/features/argo/checkout.rb +0 -20
  292. data/lib/project_types/extension/forms/register.rb +0 -47
  293. data/lib/project_types/extension/models/type.rb +0 -81
  294. data/lib/project_types/extension/models/types/checkout_post_purchase.rb +0 -23
  295. data/lib/project_types/extension/models/types/product_subscription.rb +0 -24
  296. data/lib/project_types/node/commands/generate/billing.rb +0 -39
  297. data/lib/project_types/node/commands/generate/page.rb +0 -59
  298. data/lib/project_types/node/commands/generate/webhook.rb +0 -37
  299. data/lib/project_types/script/layers/domain/script.rb +0 -18
  300. data/lib/project_types/script/layers/infrastructure/assemblyscript_tsconfig.rb +0 -38
  301. data/lib/project_types/script/layers/infrastructure/script_repository.rb +0 -59
  302. data/lib/project_types/script/templates/ts/as-pect.config.js +0 -27
  303. 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