shopify-cli 1.3.1 → 1.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 (301) 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/.gitignore +0 -1
  8. data/.rubocop.yml +61 -8
  9. data/.rubocop_todo.yml +11 -0
  10. data/.travis.yml +1 -0
  11. data/CHANGELOG.md +30 -0
  12. data/Gemfile +12 -11
  13. data/Gemfile.lock +39 -37
  14. data/README.md +39 -7
  15. data/RELEASING.md +19 -29
  16. data/Rakefile +32 -28
  17. data/bin/load_shopify.rb +6 -6
  18. data/bin/shopify +2 -2
  19. data/dev.yml +2 -2
  20. data/docs/_config.yml +1 -18
  21. data/docs/app/node/commands/index.md +2 -80
  22. data/docs/app/node/index.md +2 -33
  23. data/docs/app/rails/commands/index.md +2 -78
  24. data/docs/app/rails/index.md +2 -34
  25. data/docs/core/index.md +2 -84
  26. data/docs/getting-started/index.md +2 -25
  27. data/docs/getting-started/install/index.md +1 -118
  28. data/docs/getting-started/migrate/index.md +2 -94
  29. data/docs/getting-started/uninstall/index.md +2 -35
  30. data/docs/getting-started/upgrade/index.md +2 -39
  31. data/docs/help/start-app/index.md +2 -4
  32. data/docs/index.md +2 -24
  33. data/ext/shopify-cli/extconf.rb +7 -7
  34. data/install.sh +1 -1
  35. data/lib/docgen/markdown.rb +11 -11
  36. data/lib/{project_types/extension/graphql → graphql}/get_app_by_api_key.graphql +0 -0
  37. data/lib/project_types/extension/cli.rb +64 -47
  38. data/lib/project_types/extension/commands/build.rb +3 -3
  39. data/lib/project_types/extension/commands/create.rb +16 -9
  40. data/lib/project_types/extension/commands/extension_command.rb +8 -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 +2 -2
  44. data/lib/project_types/extension/commands/tunnel.rb +12 -12
  45. data/lib/project_types/extension/extension_project.rb +4 -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 +36 -0
  56. data/lib/project_types/extension/messages/messages.rb +53 -52
  57. data/lib/project_types/extension/models/lazy_specification_handler.rb +12 -0
  58. data/lib/project_types/extension/models/specification.rb +35 -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 +77 -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 +38 -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 +46 -38
  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 +7 -7
  87. data/lib/project_types/node/messages/messages.rb +19 -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 +60 -54
  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 +24 -24
  103. data/lib/project_types/rails/gem.rb +24 -24
  104. data/lib/project_types/rails/messages/messages.rb +12 -9
  105. data/lib/project_types/rails/ruby.rb +2 -2
  106. data/lib/project_types/script/cli.rb +42 -38
  107. data/lib/project_types/script/commands/create.rb +13 -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 +17 -12
  112. data/lib/project_types/script/errors.rb +38 -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 +18 -19
  116. data/lib/project_types/script/layers/application/create_script.rb +13 -11
  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 +12 -18
  122. data/lib/project_types/script/layers/domain/errors.rb +7 -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 -54
  127. data/lib/project_types/script/layers/infrastructure/assemblyscript_task_runner.rb +49 -18
  128. data/lib/project_types/script/layers/infrastructure/errors.rb +17 -1
  129. data/lib/project_types/script/layers/infrastructure/extension_point_repository.rb +12 -6
  130. data/lib/project_types/script/layers/infrastructure/project_creator.rb +2 -1
  131. data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +20 -13
  132. data/lib/project_types/script/layers/infrastructure/rust_project_creator.rb +72 -0
  133. data/lib/project_types/script/layers/infrastructure/rust_task_runner.rb +59 -0
  134. data/lib/project_types/script/layers/infrastructure/script_service.rb +26 -16
  135. data/lib/project_types/script/layers/infrastructure/task_runner.rb +4 -3
  136. data/lib/project_types/script/messages/messages.rb +67 -10
  137. data/lib/project_types/script/script_project.rb +47 -16
  138. data/lib/project_types/script/ui/error_handler.rb +115 -45
  139. data/lib/project_types/script/ui/printing_spinner.rb +1 -1
  140. data/lib/project_types/script/ui/strict_spinner.rb +1 -1
  141. data/lib/project_types/theme/cli.rb +40 -0
  142. data/lib/project_types/theme/commands/connect.rb +54 -0
  143. data/lib/project_types/theme/commands/create.rb +48 -0
  144. data/lib/project_types/theme/commands/deploy.rb +38 -0
  145. data/lib/project_types/theme/commands/generate.rb +20 -0
  146. data/lib/project_types/theme/commands/generate/env.rb +79 -0
  147. data/lib/project_types/theme/commands/push.rb +55 -0
  148. data/lib/project_types/theme/commands/serve.rb +31 -0
  149. data/lib/project_types/theme/forms/connect.rb +34 -0
  150. data/lib/project_types/theme/forms/create.rb +22 -0
  151. data/lib/project_types/theme/messages/messages.rb +147 -0
  152. data/lib/project_types/theme/tasks/ensure_themekit_installed.rb +78 -0
  153. data/lib/project_types/theme/themekit.rb +113 -0
  154. data/lib/rubygems_plugin.rb +3 -3
  155. data/lib/shopify-cli/admin_api.rb +52 -12
  156. data/lib/shopify-cli/admin_api/populate_resource_command.rb +17 -17
  157. data/lib/shopify-cli/admin_api/schema.rb +3 -3
  158. data/lib/shopify-cli/api.rb +38 -37
  159. data/lib/shopify-cli/command.rb +1 -1
  160. data/lib/shopify-cli/commands.rb +9 -9
  161. data/lib/shopify-cli/commands/config.rb +28 -28
  162. data/lib/shopify-cli/commands/connect.rb +35 -18
  163. data/lib/shopify-cli/commands/create.rb +5 -5
  164. data/lib/shopify-cli/commands/help.rb +6 -6
  165. data/lib/shopify-cli/commands/logout.rb +3 -3
  166. data/lib/shopify-cli/commands/system.rb +40 -31
  167. data/lib/shopify-cli/commands/version.rb +2 -2
  168. data/lib/shopify-cli/context.rb +43 -22
  169. data/lib/shopify-cli/core.rb +4 -4
  170. data/lib/shopify-cli/core/entry_point.rb +6 -6
  171. data/lib/shopify-cli/core/executor.rb +1 -1
  172. data/lib/shopify-cli/core/help_resolver.rb +2 -2
  173. data/lib/shopify-cli/core/monorail.rb +21 -19
  174. data/lib/shopify-cli/db.rb +2 -2
  175. data/lib/shopify-cli/feature.rb +1 -3
  176. data/lib/shopify-cli/form.rb +1 -1
  177. data/lib/shopify-cli/git.rb +17 -17
  178. data/lib/shopify-cli/helpers.rb +1 -1
  179. data/lib/shopify-cli/helpers/haikunator.rb +1 -1
  180. data/lib/shopify-cli/heroku.rb +28 -28
  181. data/lib/shopify-cli/http_request.rb +27 -0
  182. data/lib/shopify-cli/js_deps.rb +13 -13
  183. data/lib/shopify-cli/js_system.rb +5 -5
  184. data/lib/shopify-cli/lazy_delegator.rb +55 -0
  185. data/lib/shopify-cli/messages/messages.rb +24 -10
  186. data/lib/shopify-cli/method_object.rb +104 -0
  187. data/lib/shopify-cli/oauth.rb +25 -25
  188. data/lib/shopify-cli/oauth/servlet.rb +9 -9
  189. data/lib/shopify-cli/options.rb +3 -3
  190. data/lib/shopify-cli/packager.rb +24 -24
  191. data/lib/shopify-cli/partners_api.rb +38 -16
  192. data/lib/shopify-cli/partners_api/organizations.rb +10 -10
  193. data/lib/shopify-cli/process_supervision.rb +8 -8
  194. data/lib/shopify-cli/project.rb +27 -23
  195. data/lib/shopify-cli/project_type.rb +21 -5
  196. data/lib/shopify-cli/resolve_constant.rb +25 -0
  197. data/lib/shopify-cli/resources.rb +1 -1
  198. data/lib/shopify-cli/resources/env_file.rb +9 -9
  199. data/lib/shopify-cli/result.rb +432 -0
  200. data/lib/shopify-cli/shopifolk.rb +84 -0
  201. data/lib/shopify-cli/sub_command.rb +1 -1
  202. data/lib/shopify-cli/task.rb +9 -1
  203. data/lib/shopify-cli/tasks.rb +7 -7
  204. data/lib/shopify-cli/tasks/create_api_client.rb +17 -6
  205. data/lib/shopify-cli/tasks/ensure_dev_store.rb +11 -11
  206. data/lib/shopify-cli/tasks/ensure_env.rb +18 -15
  207. data/lib/shopify-cli/tasks/ensure_loopback_url.rb +4 -4
  208. data/lib/shopify-cli/tasks/select_org_and_shop.rb +29 -24
  209. data/lib/shopify-cli/tasks/update_dashboard_urls.rb +10 -10
  210. data/lib/shopify-cli/transform_data_structure.rb +86 -0
  211. data/lib/shopify-cli/tunnel.rb +36 -30
  212. data/lib/shopify-cli/version.rb +1 -1
  213. data/lib/shopify_cli.rb +57 -51
  214. data/shopify-cli.gemspec +6 -6
  215. data/shopify.fish +1 -1
  216. data/shopify.sh +1 -1
  217. data/vendor/deps/cli-kit/REVISION +1 -1
  218. data/vendor/deps/cli-kit/lib/cli/kit/logger.rb +2 -2
  219. data/vendor/deps/cli-kit/lib/cli/kit/system.rb +3 -3
  220. data/vendor/deps/cli-ui/REVISION +1 -1
  221. data/vendor/deps/cli-ui/lib/cli/ui.rb +26 -22
  222. data/vendor/deps/cli-ui/lib/cli/ui/ansi.rb +4 -6
  223. data/vendor/deps/cli-ui/lib/cli/ui/frame.rb +3 -3
  224. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_stack.rb +8 -9
  225. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style.rb +1 -1
  226. data/vendor/deps/cli-ui/lib/cli/ui/glyph.rb +1 -0
  227. data/vendor/deps/cli-ui/lib/cli/ui/printer.rb +15 -3
  228. data/vendor/deps/cli-ui/lib/cli/ui/prompt/interactive_options.rb +4 -11
  229. data/vendor/deps/cli-ui/lib/cli/ui/spinner.rb +3 -5
  230. data/vendor/deps/cli-ui/lib/cli/ui/terminal.rb +10 -10
  231. data/vendor/deps/cli-ui/lib/cli/ui/version.rb +1 -1
  232. data/vendor/deps/cli-ui/lib/cli/ui/wrap.rb +56 -0
  233. data/vendor/deps/webrick/.gitignore +9 -0
  234. data/vendor/deps/webrick/Gemfile +3 -0
  235. data/vendor/deps/webrick/LICENSE.txt +22 -0
  236. data/vendor/deps/webrick/README.md +61 -0
  237. data/vendor/deps/webrick/Rakefile +10 -0
  238. data/vendor/deps/webrick/lib/webrick.rb +232 -0
  239. data/vendor/deps/webrick/lib/webrick/accesslog.rb +157 -0
  240. data/vendor/deps/webrick/lib/webrick/cgi.rb +313 -0
  241. data/vendor/deps/webrick/lib/webrick/compat.rb +36 -0
  242. data/vendor/deps/webrick/lib/webrick/config.rb +158 -0
  243. data/vendor/deps/webrick/lib/webrick/cookie.rb +172 -0
  244. data/vendor/deps/webrick/lib/webrick/htmlutils.rb +30 -0
  245. data/vendor/deps/webrick/lib/webrick/httpauth.rb +96 -0
  246. data/vendor/deps/webrick/lib/webrick/httpauth/authenticator.rb +117 -0
  247. data/vendor/deps/webrick/lib/webrick/httpauth/basicauth.rb +116 -0
  248. data/vendor/deps/webrick/lib/webrick/httpauth/digestauth.rb +395 -0
  249. data/vendor/deps/webrick/lib/webrick/httpauth/htdigest.rb +132 -0
  250. data/vendor/deps/webrick/lib/webrick/httpauth/htgroup.rb +97 -0
  251. data/vendor/deps/webrick/lib/webrick/httpauth/htpasswd.rb +158 -0
  252. data/vendor/deps/webrick/lib/webrick/httpauth/userdb.rb +53 -0
  253. data/vendor/deps/webrick/lib/webrick/httpproxy.rb +354 -0
  254. data/vendor/deps/webrick/lib/webrick/httprequest.rb +636 -0
  255. data/vendor/deps/webrick/lib/webrick/httpresponse.rb +564 -0
  256. data/vendor/deps/webrick/lib/webrick/https.rb +152 -0
  257. data/vendor/deps/webrick/lib/webrick/httpserver.rb +294 -0
  258. data/vendor/deps/webrick/lib/webrick/httpservlet.rb +23 -0
  259. data/vendor/deps/webrick/lib/webrick/httpservlet/abstract.rb +152 -0
  260. data/vendor/deps/webrick/lib/webrick/httpservlet/cgi_runner.rb +47 -0
  261. data/vendor/deps/webrick/lib/webrick/httpservlet/cgihandler.rb +126 -0
  262. data/vendor/deps/webrick/lib/webrick/httpservlet/erbhandler.rb +88 -0
  263. data/vendor/deps/webrick/lib/webrick/httpservlet/filehandler.rb +552 -0
  264. data/vendor/deps/webrick/lib/webrick/httpservlet/prochandler.rb +47 -0
  265. data/vendor/deps/webrick/lib/webrick/httpstatus.rb +194 -0
  266. data/vendor/deps/webrick/lib/webrick/httputils.rb +512 -0
  267. data/vendor/deps/webrick/lib/webrick/httpversion.rb +76 -0
  268. data/vendor/deps/webrick/lib/webrick/log.rb +156 -0
  269. data/vendor/deps/webrick/lib/webrick/server.rb +381 -0
  270. data/vendor/deps/webrick/lib/webrick/ssl.rb +215 -0
  271. data/vendor/deps/webrick/lib/webrick/utils.rb +265 -0
  272. data/vendor/deps/webrick/lib/webrick/version.rb +18 -0
  273. data/vendor/deps/webrick/webrick.gemspec +74 -0
  274. data/vendor/gen/template/bin/update-deps +9 -9
  275. metadata +84 -29
  276. data/docs/Gemfile +0 -5
  277. data/docs/Gemfile.lock +0 -258
  278. data/docs/_data/nav.yml +0 -35
  279. data/docs/_includes/footer.html +0 -15
  280. data/docs/_includes/head.html +0 -19
  281. data/docs/_includes/sidebar_nav.html +0 -22
  282. data/docs/_includes/toc.html +0 -112
  283. data/docs/_layouts/default.html +0 -79
  284. data/docs/css/docs.css +0 -157
  285. data/docs/images/header.png +0 -0
  286. data/docs/installing-ruby.md +0 -28
  287. data/lib/project_types/extension/features/argo/admin.rb +0 -20
  288. data/lib/project_types/extension/features/argo/base.rb +0 -129
  289. data/lib/project_types/extension/features/argo/checkout.rb +0 -20
  290. data/lib/project_types/extension/forms/register.rb +0 -47
  291. data/lib/project_types/extension/models/type.rb +0 -81
  292. data/lib/project_types/extension/models/types/checkout_post_purchase.rb +0 -23
  293. data/lib/project_types/extension/models/types/product_subscription.rb +0 -24
  294. data/lib/project_types/node/commands/generate/billing.rb +0 -39
  295. data/lib/project_types/node/commands/generate/page.rb +0 -59
  296. data/lib/project_types/node/commands/generate/webhook.rb +0 -37
  297. data/lib/project_types/script/layers/domain/script.rb +0 -18
  298. data/lib/project_types/script/layers/infrastructure/assemblyscript_tsconfig.rb +0 -38
  299. data/lib/project_types/script/layers/infrastructure/script_repository.rb +0 -59
  300. data/lib/project_types/script/templates/ts/as-pect.config.js +0 -27
  301. data/lib/project_types/script/templates/ts/as-pect.d.ts +0 -1
@@ -1,21 +1,21 @@
1
1
  # frozen_string_literal: true
2
- require 'shopify_cli'
2
+ require "shopify_cli"
3
3
 
4
4
  module Node
5
5
  module Commands
6
6
  class Deploy < ShopifyCli::Command
7
- subcommand :Heroku, 'heroku', Project.project_filepath('commands/deploy/heroku')
7
+ subcommand :Heroku, "heroku", Project.project_filepath("commands/deploy/heroku")
8
8
 
9
9
  def call(*)
10
10
  @ctx.puts(self.class.help)
11
11
  end
12
12
 
13
13
  def self.help
14
- ShopifyCli::Context.message('node.deploy.help', ShopifyCli::TOOL_NAME)
14
+ ShopifyCli::Context.message("node.deploy.help", ShopifyCli::TOOL_NAME)
15
15
  end
16
16
 
17
17
  def self.extended_help
18
- ShopifyCli::Context.message('node.deploy.extended_help', ShopifyCli::TOOL_NAME)
18
+ ShopifyCli::Context.message("node.deploy.extended_help", ShopifyCli::TOOL_NAME)
19
19
  end
20
20
  end
21
21
  end
@@ -1,70 +1,70 @@
1
1
  # frozen_string_literal: true
2
- require 'shopify_cli'
2
+ require "shopify_cli"
3
3
 
4
4
  module Node
5
5
  module Commands
6
6
  class Deploy
7
7
  class Heroku < ShopifyCli::SubCommand
8
8
  def self.help
9
- ShopifyCli::Context.message('node.deploy.heroku.help', ShopifyCli::TOOL_NAME)
9
+ ShopifyCli::Context.message("node.deploy.heroku.help", ShopifyCli::TOOL_NAME)
10
10
  end
11
11
 
12
12
  def call(*)
13
13
  spin_group = CLI::UI::SpinGroup.new
14
14
  heroku_service = ShopifyCli::Heroku.new(@ctx)
15
15
 
16
- spin_group.add(@ctx.message('node.deploy.heroku.downloading')) do |spinner|
16
+ spin_group.add(@ctx.message("node.deploy.heroku.downloading")) do |spinner|
17
17
  heroku_service.download
18
- spinner.update_title(@ctx.message('node.deploy.heroku.downloaded'))
18
+ spinner.update_title(@ctx.message("node.deploy.heroku.downloaded"))
19
19
  end
20
20
  spin_group.wait
21
21
 
22
22
  install_message = @ctx.message(
23
- @ctx.windows? ? 'node.deploy.heroku.installing_windows' : 'node.deploy.heroku.installing'
23
+ @ctx.windows? ? "node.deploy.heroku.installing_windows" : "node.deploy.heroku.installing"
24
24
  )
25
25
  spin_group.add(install_message) do |spinner|
26
26
  heroku_service.install
27
- spinner.update_title(@ctx.message('node.deploy.heroku.installed'))
27
+ spinner.update_title(@ctx.message("node.deploy.heroku.installed"))
28
28
  end
29
29
  spin_group.wait
30
30
 
31
- spin_group.add(@ctx.message('node.deploy.heroku.git.checking')) do |spinner|
31
+ spin_group.add(@ctx.message("node.deploy.heroku.git.checking")) do |spinner|
32
32
  ShopifyCli::Git.init(@ctx)
33
- spinner.update_title(@ctx.message('node.deploy.heroku.git.initialized'))
33
+ spinner.update_title(@ctx.message("node.deploy.heroku.git.initialized"))
34
34
  end
35
35
  spin_group.wait
36
36
 
37
37
  if (account = heroku_service.whoami)
38
- @ctx.puts(@ctx.message('node.deploy.heroku.authenticated_with_account', account))
38
+ @ctx.puts(@ctx.message("node.deploy.heroku.authenticated_with_account", account))
39
39
  else
40
40
  CLI::UI::Frame.open(
41
- @ctx.message('node.deploy.heroku.authenticating'),
42
- success_text: @ctx.message('node.deploy.heroku.authenticated')
41
+ @ctx.message("node.deploy.heroku.authenticating"),
42
+ success_text: @ctx.message("node.deploy.heroku.authenticated")
43
43
  ) do
44
44
  heroku_service.authenticate
45
45
  end
46
46
  end
47
47
 
48
48
  if (app_name = heroku_service.app)
49
- @ctx.puts(@ctx.message('node.deploy.heroku.app.selected', app_name))
49
+ @ctx.puts(@ctx.message("node.deploy.heroku.app.selected", app_name))
50
50
  else
51
- app_type = CLI::UI::Prompt.ask(@ctx.message('node.deploy.heroku.app.no_apps_found')) do |handler|
52
- handler.option(@ctx.message('node.deploy.heroku.app.create')) { :new }
53
- handler.option(@ctx.message('node.deploy.heroku.app.select')) { :existing }
51
+ app_type = CLI::UI::Prompt.ask(@ctx.message("node.deploy.heroku.app.no_apps_found")) do |handler|
52
+ handler.option(@ctx.message("node.deploy.heroku.app.create")) { :new }
53
+ handler.option(@ctx.message("node.deploy.heroku.app.select")) { :existing }
54
54
  end
55
55
 
56
56
  if app_type == :existing
57
- app_name = CLI::UI::Prompt.ask(@ctx.message('node.deploy.heroku.app.name'))
57
+ app_name = CLI::UI::Prompt.ask(@ctx.message("node.deploy.heroku.app.name"))
58
58
  CLI::UI::Frame.open(
59
- @ctx.message('node.deploy.heroku.app.selecting', app_name),
60
- success_text: @ctx.message('node.deploy.heroku.app.selected', app_name)
59
+ @ctx.message("node.deploy.heroku.app.selecting", app_name),
60
+ success_text: @ctx.message("node.deploy.heroku.app.selected", app_name)
61
61
  ) do
62
62
  heroku_service.select_existing_app(app_name)
63
63
  end
64
64
  elsif app_type == :new
65
65
  CLI::UI::Frame.open(
66
- @ctx.message('node.deploy.heroku.app.creating'),
67
- success_text: @ctx.message('node.deploy.heroku.app.created')
66
+ @ctx.message("node.deploy.heroku.app.creating"),
67
+ success_text: @ctx.message("node.deploy.heroku.app.created")
68
68
  ) do
69
69
  heroku_service.create_new_app
70
70
  end
@@ -74,9 +74,9 @@ module Node
74
74
  branches = ShopifyCli::Git.branches(@ctx)
75
75
  if branches.length == 1
76
76
  branch_to_deploy = branches[0]
77
- @ctx.puts(@ctx.message('node.deploy.heroku.git.branch_selected', branch_to_deploy))
77
+ @ctx.puts(@ctx.message("node.deploy.heroku.git.branch_selected", branch_to_deploy))
78
78
  else
79
- branch_to_deploy = CLI::UI::Prompt.ask(@ctx.message('node.deploy.heroku.git.what_branch')) do |handler|
79
+ branch_to_deploy = CLI::UI::Prompt.ask(@ctx.message("node.deploy.heroku.git.what_branch")) do |handler|
80
80
  branches.each do |branch|
81
81
  handler.option(branch) { branch }
82
82
  end
@@ -84,8 +84,8 @@ module Node
84
84
  end
85
85
 
86
86
  CLI::UI::Frame.open(
87
- @ctx.message('node.deploy.heroku.deploying'),
88
- success_text: @ctx.message('node.deploy.heroku.deployed')
87
+ @ctx.message("node.deploy.heroku.deploying"),
88
+ success_text: @ctx.message("node.deploy.heroku.deployed")
89
89
  ) do
90
90
  heroku_service.deploy(branch_to_deploy)
91
91
  end
@@ -1,32 +1,23 @@
1
1
  # frozen_string_literal: true
2
- require 'shopify_cli'
2
+ require "shopify_cli"
3
3
 
4
4
  module Node
5
5
  module Commands
6
6
  class Generate < ShopifyCli::Command
7
- subcommand :Page, 'page', Project.project_filepath('commands/generate/page')
8
- subcommand :Billing, 'billing', Project.project_filepath('commands/generate/billing')
9
- subcommand :Webhook, 'webhook', Project.project_filepath('commands/generate/webhook')
7
+ subcommand :Page, "page", Project.project_filepath("commands/generate/page")
8
+ subcommand :Billing, "billing", Project.project_filepath("commands/generate/billing")
9
+ subcommand :Webhook, "webhook", Project.project_filepath("commands/generate/webhook")
10
10
 
11
11
  def call(*)
12
12
  @ctx.puts(self.class.help)
13
13
  end
14
14
 
15
15
  def self.help
16
- ShopifyCli::Context.message('node.generate.help', ShopifyCli::TOOL_NAME)
16
+ ShopifyCli::Context.message("node.generate.help")
17
17
  end
18
18
 
19
19
  def self.extended_help
20
- extended_help = "{{bold:Subcommands:}}\n"
21
- subcommand_registry.resolved_commands.sort.each do |name, klass|
22
- extended_help += " {{cyan:#{name}}}: "
23
-
24
- if (subcmd_help = klass.help)
25
- extended_help += subcmd_help.gsub("\n ", "\n ")
26
- end
27
- extended_help += "\n"
28
- end
29
- extended_help += ShopifyCli::Context.message('node.generate.extended_help', ShopifyCli::TOOL_NAME)
20
+ help
30
21
  end
31
22
 
32
23
  def self.run_generate(script, name, ctx)
@@ -39,11 +30,11 @@ module Node
39
30
  def self.response(code, name, ctx)
40
31
  case code
41
32
  when 1
42
- ctx.message('node.generate.error.generic', name)
33
+ ctx.message("node.generate.error.generic", name)
43
34
  when 2
44
- ctx.message('node.generate.error.name_exists', name)
35
+ ctx.message("node.generate.error.name_exists", name)
45
36
  else
46
- ctx.message('node.error.generic')
37
+ ctx.message("node.error.generic")
47
38
  end
48
39
  end
49
40
  end
@@ -1,4 +1,4 @@
1
- require 'shopify_cli'
1
+ require "shopify_cli"
2
2
 
3
3
  module Node
4
4
  module Commands
@@ -9,7 +9,7 @@ module Node
9
9
  end
10
10
 
11
11
  def self.help
12
- ShopifyCli::Context.message('node.open.help', ShopifyCli::TOOL_NAME)
12
+ ShopifyCli::Context.message("node.open.help", ShopifyCli::TOOL_NAME)
13
13
  end
14
14
  end
15
15
  end
@@ -1,22 +1,22 @@
1
- require 'shopify_cli'
1
+ require "shopify_cli"
2
2
 
3
3
  module Node
4
4
  module Commands
5
5
  class Populate < ShopifyCli::Command
6
- subcommand :Customer, 'customers', Project.project_filepath('commands/populate/customer')
7
- subcommand :DraftOrder, 'draftorders', Project.project_filepath('commands/populate/draft_order')
8
- subcommand :Product, 'products', Project.project_filepath('commands/populate/product')
6
+ subcommand :Customer, "customers", Project.project_filepath("commands/populate/customer")
7
+ subcommand :DraftOrder, "draftorders", Project.project_filepath("commands/populate/draft_order")
8
+ subcommand :Product, "products", Project.project_filepath("commands/populate/product")
9
9
 
10
10
  def call(_args, _name)
11
11
  @ctx.puts(self.class.help)
12
12
  end
13
13
 
14
14
  def self.help
15
- ShopifyCli::Context.message('node.populate.help', ShopifyCli::TOOL_NAME)
15
+ ShopifyCli::Context.message("node.populate.help", ShopifyCli::TOOL_NAME)
16
16
  end
17
17
 
18
18
  def self.extended_help
19
- ShopifyCli::Context.message('node.populate.extended_help', ShopifyCli::TOOL_NAME)
19
+ ShopifyCli::Context.message("node.populate.extended_help", ShopifyCli::TOOL_NAME)
20
20
  end
21
21
  end
22
22
  end
@@ -1,4 +1,4 @@
1
- require 'shopify_cli'
1
+ require "shopify_cli"
2
2
 
3
3
  module Node
4
4
  module Commands
@@ -15,11 +15,11 @@ module Node
15
15
  end
16
16
 
17
17
  def message(data)
18
- ret = data['customerCreate']['customer']
19
- id = ShopifyCli::API.gid_to_id(ret['id'])
18
+ ret = data["customerCreate"]["customer"]
19
+ id = ShopifyCli::API.gid_to_id(ret["id"])
20
20
  @ctx.message(
21
- 'node.populate.customer.added',
22
- ret['displayName'],
21
+ "node.populate.customer.added",
22
+ ret["displayName"],
23
23
  ShopifyCli::Project.current.env.shop,
24
24
  admin_url,
25
25
  id
@@ -1,4 +1,4 @@
1
- require 'shopify_cli'
1
+ require "shopify_cli"
2
2
 
3
3
  module Node
4
4
  module Commands
@@ -11,16 +11,16 @@ module Node
11
11
  lineItems: [{
12
12
  originalUnitPrice: price,
13
13
  quantity: 1,
14
- weight: { value: 10, unit: 'GRAMS' },
14
+ weight: { value: 10, unit: "GRAMS" },
15
15
  title: ShopifyCli::Helpers::Haikunator.title,
16
16
  }],
17
17
  }
18
18
  end
19
19
 
20
20
  def message(data)
21
- ret = data['draftOrderCreate']['draftOrder']
22
- id = ShopifyCli::API.gid_to_id(ret['id'])
23
- @ctx.message('node.populate.draft_order.added', ShopifyCli::Project.current.env.shop, admin_url, id)
21
+ ret = data["draftOrderCreate"]["draftOrder"]
22
+ id = ShopifyCli::API.gid_to_id(ret["id"])
23
+ @ctx.message("node.populate.draft_order.added", ShopifyCli::Project.current.env.shop, admin_url, id)
24
24
  end
25
25
  end
26
26
  end
@@ -1,4 +1,4 @@
1
- require 'shopify_cli'
1
+ require "shopify_cli"
2
2
 
3
3
  module Node
4
4
  module Commands
@@ -14,11 +14,11 @@ module Node
14
14
  end
15
15
 
16
16
  def message(data)
17
- ret = data['productCreate']['product']
18
- id = ShopifyCli::API.gid_to_id(ret['id'])
17
+ ret = data["productCreate"]["product"]
18
+ id = ShopifyCli::API.gid_to_id(ret["id"])
19
19
  @ctx.message(
20
- 'node.populate.product.added',
21
- ret['title'],
20
+ "node.populate.product.added",
21
+ ret["title"],
22
22
  ShopifyCli::Project.current.env.shop,
23
23
  admin_url,
24
24
  id
@@ -5,15 +5,15 @@ module Node
5
5
  prerequisite_task :ensure_env, :ensure_dev_store
6
6
 
7
7
  options do |parser, flags|
8
- parser.on('--host=HOST') do |h|
9
- flags[:host] = h.gsub('"', '')
8
+ parser.on("--host=HOST") do |h|
9
+ flags[:host] = h.gsub('"', "")
10
10
  end
11
11
  end
12
12
 
13
13
  def call(*)
14
14
  project = ShopifyCli::Project.current
15
15
  url = options.flags[:host] || ShopifyCli::Tunnel.start(@ctx)
16
- @ctx.abort(@ctx.message('node.serve.error.host_must_be_https')) if url.match(/^https/i).nil?
16
+ @ctx.abort(@ctx.message("node.serve.error.host_must_be_https")) if url.match(/^https/i).nil?
17
17
  project.env.update(@ctx, :host, url)
18
18
  ShopifyCli::Tasks::UpdateDashboardURLS.call(
19
19
  @ctx,
@@ -23,22 +23,22 @@ module Node
23
23
 
24
24
  if project.env.shop
25
25
  project_url = "#{project.env.host}/auth?shop=#{project.env.shop}"
26
- @ctx.puts("\n" + @ctx.message('node.serve.open_info', project_url) + "\n")
26
+ @ctx.puts("\n" + @ctx.message("node.serve.open_info", project_url) + "\n")
27
27
  end
28
28
 
29
- CLI::UI::Frame.open(@ctx.message('node.serve.running_server')) do
29
+ CLI::UI::Frame.open(@ctx.message("node.serve.running_server")) do
30
30
  env = project.env.to_h
31
- env['PORT'] = ShopifyCli::Tunnel::PORT.to_s
32
- @ctx.system('npm run dev', env: env)
31
+ env["PORT"] = ShopifyCli::Tunnel::PORT.to_s
32
+ @ctx.system("npm run dev", env: env)
33
33
  end
34
34
  end
35
35
 
36
36
  def self.help
37
- ShopifyCli::Context.message('node.serve.help', ShopifyCli::TOOL_NAME)
37
+ ShopifyCli::Context.message("node.serve.help", ShopifyCli::TOOL_NAME)
38
38
  end
39
39
 
40
40
  def self.extended_help
41
- ShopifyCli::Context.message('node.serve.extended_help')
41
+ ShopifyCli::Context.message("node.serve.extended_help")
42
42
  end
43
43
  end
44
44
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'shopify_cli'
3
+ require "shopify_cli"
4
4
 
5
5
  module Node
6
6
  module Commands
@@ -10,17 +10,17 @@ module Node
10
10
  def call(args, _name)
11
11
  subcommand = args.shift
12
12
  case subcommand
13
- when 'auth'
13
+ when "auth"
14
14
  token = args.shift
15
15
  if token.nil?
16
- @ctx.puts(@ctx.message('node.tunnel.error.token_argument_missing'))
16
+ @ctx.puts(@ctx.message("node.tunnel.error.token_argument_missing"))
17
17
  @ctx.puts("#{self.class.help}\n#{self.class.extended_help}")
18
18
  else
19
19
  ShopifyCli::Tunnel.auth(@ctx, token)
20
20
  end
21
- when 'start'
21
+ when "start"
22
22
  ShopifyCli::Tunnel.start(@ctx)
23
- when 'stop'
23
+ when "stop"
24
24
  ShopifyCli::Tunnel.stop(@ctx)
25
25
  else
26
26
  @ctx.puts(self.class.help)
@@ -28,11 +28,11 @@ module Node
28
28
  end
29
29
 
30
30
  def self.help
31
- ShopifyCli::Context.message('node.tunnel.help', ShopifyCli::TOOL_NAME)
31
+ ShopifyCli::Context.message("node.tunnel.help", ShopifyCli::TOOL_NAME)
32
32
  end
33
33
 
34
34
  def self.extended_help
35
- ShopifyCli::Context.message('node.tunnel.extended_help', ShopifyCli::TOOL_NAME)
35
+ ShopifyCli::Context.message("node.tunnel.extended_help", ShopifyCli::TOOL_NAME)
36
36
  end
37
37
  end
38
38
  end
@@ -1,4 +1,4 @@
1
- require 'uri'
1
+ require "uri"
2
2
 
3
3
  module Node
4
4
  module Forms
@@ -7,7 +7,7 @@ module Node
7
7
  flag_arguments :title, :organization_id, :shop_domain, :type
8
8
 
9
9
  def ask
10
- self.title ||= CLI::UI::Prompt.ask(ctx.message('node.forms.create.app_name'))
10
+ self.title ||= CLI::UI::Prompt.ask(ctx.message("node.forms.create.app_name"))
11
11
  self.type = ask_type
12
12
  self.name = self.title.downcase.split(" ").join("_")
13
13
  res = ShopifyCli::Tasks::SelectOrgAndShop.call(ctx, organization_id: organization_id, shop_domain: shop_domain)
@@ -19,16 +19,16 @@ module Node
19
19
 
20
20
  def ask_type
21
21
  if type.nil?
22
- return CLI::UI::Prompt.ask(ctx.message('node.forms.create.app_type.select')) do |handler|
23
- handler.option(ctx.message('node.forms.create.app_type.select_public')) { 'public' }
24
- handler.option(ctx.message('node.forms.create.app_type.select_custom')) { 'custom' }
22
+ return CLI::UI::Prompt.ask(ctx.message("node.forms.create.app_type.select")) do |handler|
23
+ handler.option(ctx.message("node.forms.create.app_type.select_public")) { "public" }
24
+ handler.option(ctx.message("node.forms.create.app_type.select_custom")) { "custom" }
25
25
  end
26
26
  end
27
27
 
28
28
  unless ShopifyCli::Tasks::CreateApiClient::VALID_APP_TYPES.include?(type)
29
- ctx.abort(ctx.message('node.forms.create.error.invalid_app_type', type))
29
+ ctx.abort(ctx.message("node.forms.create.error.invalid_app_type", type))
30
30
  end
31
- ctx.puts(ctx.message('node.forms.create.app_type.selected', type))
31
+ ctx.puts(ctx.message("node.forms.create.app_type.selected", type))
32
32
  type
33
33
  end
34
34
  end
@@ -8,15 +8,22 @@ module Node
8
8
  generic: "Error",
9
9
  },
10
10
 
11
+ connect: {
12
+ connected: "Project now connected to {{green:%s}}",
13
+ production_warning: <<~MESSAGE,
14
+ {{yellow:! Warning: if you have connected to an {{bold:app in production}}, running {{command:serve}} may update the app URL and cause an outage.
15
+ MESSAGE
16
+ },
17
+
11
18
  create: {
12
19
  help: <<~HELP,
13
20
  {{command:%s create node}}: Creates an embedded nodejs app.
14
21
  Usage: {{command:%s create node}}
15
22
  Options:
16
23
  {{command:--name=NAME}} App name. Any string.
17
- {{command:--app_url=APPURL}} App URL. Must be a valid URL.
18
- {{command:--organization_id=ID}} Partner organization ID. Must be an existing organization.
19
- {{command:--shop_domain=MYSHOPIFYDOMAIN }} Development store URL. Must be an existing development store.
24
+ {{command:--app-url=APPURL}} App URL. Must be a valid URL.
25
+ {{command:--organization-id=ID}} Partner organization ID. Must be an existing organization.
26
+ {{command:--shop-domain=MYSHOPIFYDOMAIN }} Development store URL. Must be an existing development store.
20
27
  HELP
21
28
  error: {
22
29
  node_required: "node is required to create an app project. Download at https://nodejs.org/en/download.",
@@ -26,12 +33,6 @@ module Node
26
33
  npm_version_failure: "Failed to get the current npm version. Please make sure it is installed as per " \
27
34
  "the instructions at https://www.npmjs.com/get-npm.",
28
35
  },
29
- info: {
30
- created: "{{v}} {{green:%s}} was created in your Partner Dashboard {{underline:%s}}",
31
- serve: "{{*}} Change directories to your new project folder {{green:%s}} and run {{command:%s serve}} " \
32
- "to start a local server",
33
- install: "{{*}} Then, visit {{underline:%s/test}} to install {{green:%s}} on your Dev Store",
34
- },
35
36
  node_version: "node %s",
36
37
  npm_version: "npm %s",
37
38
  },
@@ -82,52 +83,17 @@ module Node
82
83
 
83
84
  generate: {
84
85
  help: <<~HELP,
85
- Generate code in your Node project. Supports generating new billing API calls, new pages, or new webhooks.
86
- Usage: {{command:%s generate [ billing | page | webhook ]}}
87
- HELP
88
- extended_help: <<~EXAMPLES,
89
- {{bold:Examples:}}
90
- {{cyan:%s generate webhook PRODUCTS_CREATE}}
91
- Generate and register a new webhook that will be called every time a new product is created on your store.
92
- EXAMPLES
93
-
94
- error: {
95
- name_exists: "%s already exists!",
96
- generic: "Error generating %s",
97
- },
98
-
99
- billing: {
100
- help: <<~HELP,
101
- Enable charging for your app. This command generates the necessary code to call Shopify’s billing API.
102
- Usage: {{command:%s generate billing [ one-time-billing | recurring-billing ]}}
103
- HELP
104
- type_select: "How would you like to charge for your app?",
105
- generating: "Generating %s code ...",
106
- generated: "{{green:%s}} generated in server/server.js",
107
- },
86
+ {{red:The {{command:generate}} command is no longer supported.}}
87
+ You can complete any tasks previously supported by {{command:generate}} with these guides:
88
+ {{green:page}}
89
+ Create a page with Polaris design components: {{green:https://shopify.dev/tutorials/build-a-shopify-app-with-node-and-react/build-your-user-interface-with-polaris}}
108
90
 
109
- page: {
110
- help: <<~HELP,
111
- Generate a new page in your app with the specified name. New files are generated inside the project’s “/pages” directory.
112
- Usage: {{command:%s generate page <pagename>}}
113
- HELP
114
- error: {
115
- invalid_page_type: "Invalid page type.",
116
- },
117
- type_select: "Which template would you like to use?",
118
- generating: "Generating %s page...",
119
- generated: "{{green: %s}} generated in pages/%s",
120
- },
91
+ {{green:webhook}}
92
+ Register and process webhooks: {{green:https://github.com/Shopify/shopify-node-api/blob/main/docs/usage/webhooks.md}}
121
93
 
122
- webhook: {
123
- help: <<~HELP,
124
- Generate and register a new webhook that listens for the specified Shopify store event.
125
- Usage: {{command:%s generate webhook <type>}}
126
- HELP
127
- type_select: "What type of webhook would you like to create?",
128
- generating: "Generating webhook: %s",
129
- generated: "{{green:%s}} generated in server/server.js",
130
- },
94
+ {{green:billing}}
95
+ Create and manage app billing models: {{green:https://shopify.dev/tutorials/bill-for-your-app-using-graphql-admin-api}}
96
+ HELP
131
97
  },
132
98
 
133
99
  open: {