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,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require 'shopify_cli'
2
+ require "shopify_cli"
3
3
 
4
4
  module ShopifyCli
5
5
  class Command < CLI::Kit::BaseCommand
@@ -1,9 +1,9 @@
1
- require 'shopify_cli'
1
+ require "shopify_cli"
2
2
 
3
3
  module ShopifyCli
4
4
  module Commands
5
5
  Registry = CLI::Kit::CommandRegistry.new(
6
- default: 'help',
6
+ default: "help",
7
7
  contextual_resolver: nil,
8
8
  )
9
9
  @core_commands = []
@@ -18,12 +18,12 @@ module ShopifyCli
18
18
  @core_commands.include?(cmd)
19
19
  end
20
20
 
21
- register :Config, 'config', 'shopify-cli/commands/config', true
22
- register :Connect, 'connect', 'shopify-cli/commands/connect', true
23
- register :Create, 'create', 'shopify-cli/commands/create', true
24
- register :Help, 'help', 'shopify-cli/commands/help', true
25
- register :Logout, 'logout', 'shopify-cli/commands/logout', true
26
- register :System, 'system', 'shopify-cli/commands/system', true
27
- register :Version, 'version', 'shopify-cli/commands/version', true
21
+ register :Config, "config", "shopify-cli/commands/config", true
22
+ register :Connect, "connect", "shopify-cli/commands/connect", true
23
+ register :Create, "create", "shopify-cli/commands/create", true
24
+ register :Help, "help", "shopify-cli/commands/help", true
25
+ register :Logout, "logout", "shopify-cli/commands/logout", true
26
+ register :System, "system", "shopify-cli/commands/system", true
27
+ register :Version, "version", "shopify-cli/commands/version", true
28
28
  end
29
29
  end
@@ -1,73 +1,73 @@
1
- require 'shopify_cli'
1
+ require "shopify_cli"
2
2
 
3
3
  module ShopifyCli
4
4
  module Commands
5
5
  class Config < ShopifyCli::Command
6
6
  hidden_feature(feature_set: :debug)
7
7
 
8
- subcommand :Feature, 'feature'
9
- subcommand :Analytics, 'analytics'
8
+ subcommand :Feature, "feature"
9
+ subcommand :Analytics, "analytics"
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('core.config.help', ShopifyCli::TOOL_NAME)
16
+ ShopifyCli::Context.message("core.config.help", ShopifyCli::TOOL_NAME)
17
17
  end
18
18
 
19
19
  class Feature < ShopifyCli::SubCommand
20
20
  def self.help
21
- ShopifyCli::Context.message('core.config.feature.help', ShopifyCli::TOOL_NAME)
21
+ ShopifyCli::Context.message("core.config.feature.help", ShopifyCli::TOOL_NAME)
22
22
  end
23
23
 
24
24
  options do |parser, flags|
25
- parser.on('--enable') { flags[:action] = 'enable' }
26
- parser.on('--disable') { flags[:action] = 'disable' }
27
- parser.on('--status') { flags[:action] = 'status' }
25
+ parser.on("--enable") { flags[:action] = "enable" }
26
+ parser.on("--disable") { flags[:action] = "disable" }
27
+ parser.on("--status") { flags[:action] = "status" }
28
28
  end
29
29
 
30
30
  def call(args, _name)
31
31
  feature_name = args.shift
32
- return @ctx.puts(@ctx.message('core.config.help', ShopifyCli::TOOL_NAME)) if feature_name.nil?
32
+ return @ctx.puts(@ctx.message("core.config.help", ShopifyCli::TOOL_NAME)) if feature_name.nil?
33
33
  is_enabled = ShopifyCli::Feature.enabled?(feature_name)
34
- if options.flags[:action] == 'disable' && is_enabled
34
+ if options.flags[:action] == "disable" && is_enabled
35
35
  ShopifyCli::Feature.disable(feature_name)
36
- @ctx.puts(@ctx.message('core.config.feature.disabled', feature_name))
37
- elsif options.flags[:action] == 'enable' && !is_enabled
36
+ @ctx.puts(@ctx.message("core.config.feature.disabled", feature_name))
37
+ elsif options.flags[:action] == "enable" && !is_enabled
38
38
  ShopifyCli::Feature.enable(feature_name)
39
- @ctx.puts(@ctx.message('core.config.feature.enabled', feature_name))
39
+ @ctx.puts(@ctx.message("core.config.feature.enabled", feature_name))
40
40
  elsif is_enabled
41
- @ctx.puts(@ctx.message('core.config.feature.is_enabled', feature_name))
41
+ @ctx.puts(@ctx.message("core.config.feature.is_enabled", feature_name))
42
42
  else
43
- @ctx.puts(@ctx.message('core.config.feature.is_disabled', feature_name))
43
+ @ctx.puts(@ctx.message("core.config.feature.is_disabled", feature_name))
44
44
  end
45
45
  end
46
46
  end
47
47
 
48
48
  class Analytics < ShopifyCli::SubCommand
49
49
  def self.help
50
- ShopifyCli::Context.message('core.config.analytics.help', ShopifyCli::TOOL_NAME)
50
+ ShopifyCli::Context.message("core.config.analytics.help", ShopifyCli::TOOL_NAME)
51
51
  end
52
52
 
53
53
  options do |parser, flags|
54
- parser.on('--enable') { flags[:action] = 'enable' }
55
- parser.on('--disable') { flags[:action] = 'disable' }
56
- parser.on('--status') { flags[:action] = 'status' }
54
+ parser.on("--enable") { flags[:action] = "enable" }
55
+ parser.on("--disable") { flags[:action] = "disable" }
56
+ parser.on("--status") { flags[:action] = "status" }
57
57
  end
58
58
 
59
59
  def call(_args, _name)
60
- is_enabled = ShopifyCli::Config.get_bool('analytics', 'enabled')
61
- if options.flags[:action] == 'disable' && is_enabled
62
- ShopifyCli::Config.set('analytics', 'enabled', false)
63
- @ctx.puts(@ctx.message('core.config.analytics.disabled'))
64
- elsif options.flags[:action] == 'enable' && !is_enabled
65
- ShopifyCli::Config.set('analytics', 'enabled', true)
66
- @ctx.puts(@ctx.message('core.config.analytics.enabled'))
60
+ is_enabled = ShopifyCli::Config.get_bool("analytics", "enabled")
61
+ if options.flags[:action] == "disable" && is_enabled
62
+ ShopifyCli::Config.set("analytics", "enabled", false)
63
+ @ctx.puts(@ctx.message("core.config.analytics.disabled"))
64
+ elsif options.flags[:action] == "enable" && !is_enabled
65
+ ShopifyCli::Config.set("analytics", "enabled", true)
66
+ @ctx.puts(@ctx.message("core.config.analytics.enabled"))
67
67
  elsif is_enabled
68
- @ctx.puts(@ctx.message('core.config.analytics.is_enabled'))
68
+ @ctx.puts(@ctx.message("core.config.analytics.is_enabled"))
69
69
  else
70
- @ctx.puts(@ctx.message('core.config.analytics.is_disabled'))
70
+ @ctx.puts(@ctx.message("core.config.analytics.is_disabled"))
71
71
  end
72
72
  end
73
73
  end
@@ -1,46 +1,63 @@
1
- require 'shopify_cli'
1
+ require "shopify_cli"
2
2
 
3
3
  module ShopifyCli
4
4
  module Commands
5
5
  class Connect < ShopifyCli::Command
6
- def call(*)
7
- project_type = ask_project_type unless Project.has_current?
8
-
9
- if Project.has_current? && Project.current && Project.current.env
10
- @ctx.puts @ctx.message('core.connect.already_connected_warning')
11
- prod_warning = @ctx.message('core.connect.production_warning')
12
- @ctx.puts prod_warning if [:rails, :node].include?(Project.current_project_type)
6
+ class << self
7
+ def call(args, command_name)
8
+ ProjectType.load_type(args[0]) unless args.empty?
9
+ super
13
10
  end
14
11
 
15
- org = ShopifyCli::Tasks::EnsureEnv.call(@ctx, regenerate: true)
16
- write_cli_yml(project_type, org['id']) unless Project.has_current?
17
- api_key = Project.current(force_reload: true).env['api_key']
18
- @ctx.puts(@ctx.message('core.connect.connected', get_app(org['apps'], api_key).first["title"]))
12
+ def help
13
+ ShopifyCli::Context.message("core.connect.help", ShopifyCli::TOOL_NAME)
14
+ end
19
15
  end
20
16
 
21
- def get_app(apps, api_key)
22
- apps.select { |app| app["apiKey"] == api_key }
17
+ def call(args, command_name)
18
+ if Project.current&.env
19
+ @ctx.puts(@ctx.message("core.connect.already_connected_warning"))
20
+ end
21
+
22
+ project_type = ask_project_type
23
+
24
+ klass = ProjectType.load_type(project_type)&.connect_command
25
+
26
+ if klass
27
+ klass.ctx = @ctx
28
+ klass.call(args, command_name, "connect")
29
+ else
30
+ app = default_connect(project_type)
31
+ @ctx.done(@ctx.message("core.connect.connected", app))
32
+ end
23
33
  end
24
34
 
25
35
  def ask_project_type
26
- CLI::UI::Prompt.ask(@ctx.message('core.connect.project_type_select')) do |handler|
36
+ CLI::UI::Prompt.ask(@ctx.message("core.connect.project_type_select")) do |handler|
27
37
  ShopifyCli::Commands::Create.all_visible_type.each do |type|
28
38
  handler.option(type.project_name) { type.project_type }
29
39
  end
30
40
  end
31
41
  end
32
42
 
43
+ def default_connect(project_type)
44
+ org = ShopifyCli::Tasks::EnsureEnv.call(@ctx, regenerate: true)
45
+ write_cli_yml(project_type, org["id"]) unless Project.has_current?
46
+ api_key = Project.current(force_reload: true).env["api_key"]
47
+ get_app(org["apps"], api_key).first["title"]
48
+ end
49
+
33
50
  def write_cli_yml(project_type, org_id)
34
51
  ShopifyCli::Project.write(
35
52
  @ctx,
36
53
  project_type: project_type,
37
54
  organization_id: org_id,
38
55
  )
39
- @ctx.done(@ctx.message('core.connect.cli_yml_saved'))
56
+ @ctx.done(@ctx.message("core.connect.cli_yml_saved"))
40
57
  end
41
58
 
42
- def self.help
43
- ShopifyCli::Context.message('core.connect.help', ShopifyCli::TOOL_NAME)
59
+ def get_app(apps, api_key)
60
+ apps.select { |app| app["apiKey"] == api_key }
44
61
  end
45
62
  end
46
63
  end
@@ -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
 
@@ -23,10 +23,11 @@ module ShopifyCli
23
23
  display_cli_ruby(show_all_details)
24
24
  display_utility_commands(show_all_details)
25
25
  display_project_commands(show_all_details)
26
+ display_shopify_staff_identity if show_all_details
26
27
  end
27
28
 
28
29
  def self.help
29
- ShopifyCli::Context.message('core.system.help', ShopifyCli::TOOL_NAME)
30
+ ShopifyCli::Context.message("core.system.help", ShopifyCli::TOOL_NAME)
30
31
  end
31
32
 
32
33
  private
@@ -46,14 +47,14 @@ module ShopifyCli
46
47
 
47
48
  cli_constants += cli_constants_extra if show_all_details
48
49
 
49
- @ctx.puts(@ctx.message('core.system.header'))
50
+ @ctx.puts(@ctx.message("core.system.header"))
50
51
  cli_constants.each do |s|
51
- @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")
52
53
  end
53
54
 
54
55
  if show_all_details
55
56
  cli_path_methods.each do |m|
56
- @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")
57
58
  end
58
59
  end
59
60
  end
@@ -61,55 +62,55 @@ module ShopifyCli
61
62
  def display_cli_ruby(_show_all_details)
62
63
  rbconfig_constants = %w(host RUBY_VERSION_NAME)
63
64
 
64
- @ctx.puts("\n" + @ctx.message('core.system.ruby_header', RbConfig.ruby))
65
+ @ctx.puts("\n" + @ctx.message("core.system.ruby_header", RbConfig.ruby))
65
66
  rbconfig_constants.each do |s|
66
- @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))
67
68
  end
68
69
  end
69
70
 
70
71
  def display_utility_commands(_show_all_details)
71
72
  commands = %w(git curl tar)
72
73
 
73
- @ctx.puts("\n" + @ctx.message('core.system.command_header'))
74
+ @ctx.puts("\n" + @ctx.message("core.system.command_header"))
74
75
  commands.each do |s|
75
76
  cmd_path = @ctx.which(s)
76
77
 
77
78
  if !cmd_path.nil?
78
- @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))
79
80
  else
80
- @ctx.puts(" " + @ctx.message('core.system.command_not_found', s))
81
+ @ctx.puts(" " + @ctx.message("core.system.command_not_found", s))
81
82
  end
82
83
  end
83
84
  end
84
85
 
85
86
  def display_ngrok
86
- 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}")
87
88
  if File.exist?(ngrok_location)
88
- @ctx.puts(" " + @ctx.message('core.system.ngrok_available', ngrok_location))
89
+ @ctx.puts(" " + @ctx.message("core.system.ngrok_available", ngrok_location))
89
90
  else
90
- @ctx.puts(" " + @ctx.message('core.system.ngrok_not_available'))
91
+ @ctx.puts(" " + @ctx.message("core.system.ngrok_not_available"))
91
92
  end
92
93
  end
93
94
 
94
95
  def display_project_commands(_show_all_details)
95
96
  case Project.current_project_type
96
97
  when :node
97
- display_project('Node.js', %w(npm node yarn))
98
+ display_project("Node.js", %w(npm node yarn))
98
99
  when :rails
99
- display_project('Rails', %w(gem rails rake ruby))
100
+ display_project("Rails", %w(gem rails rake ruby))
100
101
  end
101
102
  end
102
103
 
103
104
  def display_project(project_type, commands)
104
- @ctx.puts("\n" + @ctx.message('core.system.project.header', project_type))
105
+ @ctx.puts("\n" + @ctx.message("core.system.project.header", project_type))
105
106
  commands.each do |s|
106
107
  cmd_path = @ctx.which(s)
107
108
  if !cmd_path.nil?
108
- version_output, _ = @ctx.capture2e(s, '--version')
109
+ version_output, _ = @ctx.capture2e(s, "--version")
109
110
  version = version_output.match(/(\d+\.[^\s]+)/)[0]
110
- @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))
111
112
  else
112
- @ctx.puts(" " + @ctx.message('core.system.project.command_not_found', s))
113
+ @ctx.puts(" " + @ctx.message("core.system.project.command_not_found", s))
113
114
  end
114
115
  end
115
116
  display_ngrok
@@ -117,28 +118,36 @@ module ShopifyCli
117
118
  end
118
119
 
119
120
  def display_project_environment
120
- @ctx.puts("\n " + @ctx.message('core.system.project.env_header'))
121
- if File.exist?('./.env')
121
+ @ctx.puts("\n " + @ctx.message("core.system.project.env_header"))
122
+ if File.exist?("./.env")
122
123
  Project.current.env.to_h.each do |k, v|
123
- display_value = if v.nil? || v.strip == ''
124
- @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")
125
126
  else
126
127
  k.match(/^SHOPIFY_API/) ? "********" : v
127
128
  end
128
- @ctx.puts(" " + @ctx.message('core.system.project.env', k, display_value))
129
+ @ctx.puts(" " + @ctx.message("core.system.project.env", k, display_value))
129
130
  end
130
131
  else
131
- @ctx.puts(" " + @ctx.message('core.system.project.no_env'))
132
+ @ctx.puts(" " + @ctx.message("core.system.project.no_env"))
132
133
  end
133
134
  end
134
135
 
135
136
  def display_environment
136
- @ctx.puts(@ctx.message('core.system.environment_header'))
137
+ @ctx.puts(@ctx.message("core.system.environment_header"))
137
138
  %w(TERM SHELL PATH USING_SHOPIFY_CLI LANG).each do |k|
138
- @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?
139
140
  end
140
141
  @ctx.puts("")
141
142
  end
143
+
144
+ def display_shopify_staff_identity
145
+ is_shopifolk = ShopifyCli::Shopifolk.check
146
+ if is_shopifolk
147
+ @ctx.puts("\n" + @ctx.message("core.system.identity_header"))
148
+ @ctx.puts(" " + @ctx.message("core.system.identity_is_shopifolk"))
149
+ end
150
+ end
142
151
  end
143
152
  end
144
153
  end