shopify-cli 1.5.0 → 1.9.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 (305) hide show
  1. checksums.yaml +4 -4
  2. data/.github/PULL_REQUEST_TEMPLATE.md +1 -0
  3. data/.rubocop_todo.yml +15 -2
  4. data/.travis.yml +1 -0
  5. data/CHANGELOG.md +26 -0
  6. data/Gemfile +12 -12
  7. data/Gemfile.lock +14 -14
  8. data/README.md +39 -7
  9. data/Rakefile +32 -28
  10. data/bin/load_shopify.rb +6 -6
  11. data/bin/shopify +2 -2
  12. data/dev.yml +5 -2
  13. data/docs/_config.yml +1 -18
  14. data/docs/app/node/commands/index.md +2 -80
  15. data/docs/app/node/index.md +2 -33
  16. data/docs/app/rails/commands/index.md +2 -78
  17. data/docs/app/rails/index.md +2 -34
  18. data/docs/core/index.md +2 -84
  19. data/docs/getting-started/index.md +2 -25
  20. data/docs/getting-started/install/index.md +1 -118
  21. data/docs/getting-started/migrate/index.md +2 -94
  22. data/docs/getting-started/uninstall/index.md +2 -35
  23. data/docs/getting-started/upgrade/index.md +2 -39
  24. data/docs/help/start-app/index.md +2 -4
  25. data/docs/index.md +2 -24
  26. data/ext/shopify-cli/extconf.rb +7 -7
  27. data/install.sh +1 -1
  28. data/lib/docgen/markdown.rb +12 -12
  29. data/lib/graphql/extension_create.graphql +17 -2
  30. data/lib/graphql/fetch_specifications.graphql +14 -0
  31. data/lib/{project_types/extension/graphql → graphql}/get_app_by_api_key.graphql +0 -0
  32. data/lib/project_types/extension/cli.rb +56 -48
  33. data/lib/project_types/extension/commands/build.rb +3 -3
  34. data/lib/project_types/extension/commands/create.rb +17 -10
  35. data/lib/project_types/extension/commands/extension_command.rb +14 -7
  36. data/lib/project_types/extension/commands/push.rb +10 -10
  37. data/lib/project_types/extension/commands/register.rb +22 -32
  38. data/lib/project_types/extension/commands/serve.rb +1 -7
  39. data/lib/project_types/extension/commands/tunnel.rb +12 -12
  40. data/lib/project_types/extension/extension_project.rb +22 -7
  41. data/lib/project_types/extension/extension_project_keys.rb +5 -4
  42. data/lib/project_types/extension/features/argo.rb +123 -0
  43. data/lib/project_types/extension/features/argo_config.rb +5 -5
  44. data/lib/project_types/extension/features/argo_dependencies.rb +5 -5
  45. data/lib/project_types/extension/features/argo_renderer_package.rb +32 -0
  46. data/lib/project_types/extension/features/argo_serve.rb +69 -0
  47. data/lib/project_types/extension/features/argo_setup.rb +2 -2
  48. data/lib/project_types/extension/features/argo_setup_steps.rb +4 -4
  49. data/lib/project_types/extension/forms/create.rb +28 -34
  50. data/lib/project_types/extension/forms/questions/ask_app.rb +53 -0
  51. data/lib/project_types/extension/forms/questions/ask_name.rb +40 -0
  52. data/lib/project_types/extension/forms/questions/ask_type.rb +47 -0
  53. data/lib/project_types/extension/messages/message_loading.rb +3 -1
  54. data/lib/project_types/extension/messages/messages.rb +55 -52
  55. data/lib/project_types/extension/models/lazy_specification_handler.rb +12 -0
  56. data/lib/project_types/extension/models/registration.rb +1 -0
  57. data/lib/project_types/extension/models/specification.rb +39 -0
  58. data/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +19 -0
  59. data/lib/project_types/extension/models/specification_handlers/default.rb +75 -0
  60. data/lib/project_types/extension/models/specifications.rb +88 -0
  61. data/lib/project_types/extension/tasks/configure_features.rb +54 -0
  62. data/lib/project_types/extension/tasks/converters/app_converter.rb +6 -6
  63. data/lib/project_types/extension/tasks/converters/registration_converter.rb +8 -6
  64. data/lib/project_types/extension/tasks/converters/validation_error_converter.rb +4 -4
  65. data/lib/project_types/extension/tasks/converters/version_converter.rb +7 -7
  66. data/lib/project_types/extension/tasks/create_extension.rb +4 -4
  67. data/lib/project_types/extension/tasks/fetch_specifications.rb +18 -0
  68. data/lib/project_types/extension/tasks/get_app.rb +4 -4
  69. data/lib/project_types/extension/tasks/get_apps.rb +3 -3
  70. data/lib/project_types/extension/tasks/update_draft.rb +4 -4
  71. data/lib/project_types/extension/tasks/user_errors.rb +4 -4
  72. data/lib/project_types/node/cli.rb +19 -19
  73. data/lib/project_types/node/commands/connect.rb +3 -3
  74. data/lib/project_types/node/commands/create.rb +42 -38
  75. data/lib/project_types/node/commands/deploy.rb +4 -4
  76. data/lib/project_types/node/commands/deploy/heroku.rb +24 -24
  77. data/lib/project_types/node/commands/generate.rb +3 -34
  78. data/lib/project_types/node/commands/open.rb +2 -2
  79. data/lib/project_types/node/commands/populate.rb +6 -6
  80. data/lib/project_types/node/commands/populate/customer.rb +5 -5
  81. data/lib/project_types/node/commands/populate/draft_order.rb +5 -5
  82. data/lib/project_types/node/commands/populate/product.rb +5 -5
  83. data/lib/project_types/node/commands/serve.rb +9 -9
  84. data/lib/project_types/node/commands/tunnel.rb +7 -7
  85. data/lib/project_types/node/forms/create.rb +17 -8
  86. data/lib/project_types/node/messages/messages.rb +13 -47
  87. data/lib/project_types/rails/cli.rb +21 -21
  88. data/lib/project_types/rails/commands/connect.rb +3 -3
  89. data/lib/project_types/rails/commands/create.rb +56 -54
  90. data/lib/project_types/rails/commands/deploy.rb +4 -4
  91. data/lib/project_types/rails/commands/deploy/heroku.rb +30 -30
  92. data/lib/project_types/rails/commands/generate.rb +7 -7
  93. data/lib/project_types/rails/commands/generate/webhook.rb +6 -6
  94. data/lib/project_types/rails/commands/open.rb +2 -2
  95. data/lib/project_types/rails/commands/populate.rb +6 -6
  96. data/lib/project_types/rails/commands/populate/customer.rb +5 -5
  97. data/lib/project_types/rails/commands/populate/draft_order.rb +5 -5
  98. data/lib/project_types/rails/commands/populate/product.rb +5 -5
  99. data/lib/project_types/rails/commands/serve.rb +11 -11
  100. data/lib/project_types/rails/commands/tunnel.rb +7 -7
  101. data/lib/project_types/rails/forms/create.rb +35 -25
  102. data/lib/project_types/rails/gem.rb +24 -24
  103. data/lib/project_types/rails/messages/messages.rb +6 -5
  104. data/lib/project_types/rails/ruby.rb +2 -2
  105. data/lib/project_types/script/cli.rb +38 -39
  106. data/lib/project_types/script/commands/create.rb +12 -14
  107. data/lib/project_types/script/commands/push.rb +10 -17
  108. data/lib/project_types/script/config/extension_points.yml +29 -10
  109. data/lib/project_types/script/errors.rb +1 -2
  110. data/lib/project_types/script/forms/create.rb +18 -5
  111. data/lib/project_types/script/graphql/app_script_update_or_create.graphql +9 -1
  112. data/lib/project_types/script/graphql/script_service_proxy.graphql +1 -2
  113. data/lib/project_types/script/layers/application/build_script.rb +10 -7
  114. data/lib/project_types/script/layers/application/create_script.rb +37 -25
  115. data/lib/project_types/script/layers/application/extension_points.rb +25 -0
  116. data/lib/project_types/script/layers/application/project_dependencies.rb +4 -4
  117. data/lib/project_types/script/layers/application/push_script.rb +13 -18
  118. data/lib/project_types/script/layers/domain/config_ui.rb +16 -0
  119. data/lib/project_types/script/layers/domain/errors.rb +20 -0
  120. data/lib/project_types/script/layers/domain/extension_point.rb +82 -11
  121. data/lib/project_types/script/layers/domain/metadata.rb +48 -0
  122. data/lib/project_types/script/layers/domain/push_package.rb +25 -6
  123. data/lib/project_types/script/layers/domain/script_project.rb +34 -0
  124. data/lib/project_types/script/layers/infrastructure/assemblyscript_project_creator.rb +42 -13
  125. data/lib/project_types/script/layers/infrastructure/assemblyscript_task_runner.rb +24 -49
  126. data/lib/project_types/script/layers/infrastructure/errors.rb +32 -19
  127. data/lib/project_types/script/layers/infrastructure/extension_point_repository.rb +12 -6
  128. data/lib/project_types/script/layers/infrastructure/project_creator.rb +2 -1
  129. data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +22 -17
  130. data/lib/project_types/script/layers/infrastructure/rust_project_creator.rb +72 -0
  131. data/lib/project_types/script/layers/infrastructure/rust_task_runner.rb +59 -0
  132. data/lib/project_types/script/layers/infrastructure/script_project_repository.rb +145 -0
  133. data/lib/project_types/script/layers/infrastructure/script_service.rb +32 -75
  134. data/lib/project_types/script/layers/infrastructure/task_runner.rb +4 -3
  135. data/lib/project_types/script/messages/messages.rb +58 -59
  136. data/lib/project_types/script/ui/error_handler.rb +115 -72
  137. data/lib/project_types/script/ui/printing_spinner.rb +1 -1
  138. data/lib/project_types/script/ui/strict_spinner.rb +1 -1
  139. data/lib/project_types/theme/cli.rb +40 -0
  140. data/lib/project_types/theme/commands/connect.rb +54 -0
  141. data/lib/project_types/theme/commands/create.rb +48 -0
  142. data/lib/project_types/theme/commands/deploy.rb +38 -0
  143. data/lib/project_types/theme/commands/generate.rb +20 -0
  144. data/lib/project_types/theme/commands/generate/env.rb +79 -0
  145. data/lib/project_types/theme/commands/push.rb +55 -0
  146. data/lib/project_types/theme/commands/serve.rb +31 -0
  147. data/lib/project_types/theme/forms/connect.rb +34 -0
  148. data/lib/project_types/theme/forms/create.rb +22 -0
  149. data/lib/project_types/theme/messages/messages.rb +147 -0
  150. data/lib/project_types/theme/tasks/ensure_themekit_installed.rb +78 -0
  151. data/lib/project_types/theme/themekit.rb +113 -0
  152. data/lib/rubygems_plugin.rb +3 -3
  153. data/lib/shopify-cli/admin_api.rb +52 -12
  154. data/lib/shopify-cli/admin_api/populate_resource_command.rb +17 -17
  155. data/lib/shopify-cli/admin_api/schema.rb +3 -3
  156. data/lib/shopify-cli/api.rb +34 -31
  157. data/lib/shopify-cli/command.rb +1 -1
  158. data/lib/shopify-cli/commands.rb +9 -9
  159. data/lib/shopify-cli/commands/config.rb +28 -52
  160. data/lib/shopify-cli/commands/connect.rb +10 -10
  161. data/lib/shopify-cli/commands/create.rb +5 -5
  162. data/lib/shopify-cli/commands/help.rb +6 -6
  163. data/lib/shopify-cli/commands/logout.rb +3 -3
  164. data/lib/shopify-cli/commands/system.rb +33 -33
  165. data/lib/shopify-cli/commands/version.rb +2 -2
  166. data/lib/shopify-cli/context.rb +71 -22
  167. data/lib/shopify-cli/core.rb +4 -4
  168. data/lib/shopify-cli/core/entry_point.rb +5 -5
  169. data/lib/shopify-cli/core/executor.rb +1 -1
  170. data/lib/shopify-cli/core/help_resolver.rb +2 -2
  171. data/lib/shopify-cli/core/monorail.rb +16 -16
  172. data/lib/shopify-cli/db.rb +2 -2
  173. data/lib/shopify-cli/feature.rb +1 -3
  174. data/lib/shopify-cli/form.rb +1 -1
  175. data/lib/shopify-cli/git.rb +17 -17
  176. data/lib/shopify-cli/helpers.rb +1 -1
  177. data/lib/shopify-cli/helpers/haikunator.rb +1 -1
  178. data/lib/shopify-cli/heroku.rb +28 -28
  179. data/lib/shopify-cli/http_request.rb +21 -9
  180. data/lib/shopify-cli/js_deps.rb +12 -12
  181. data/lib/shopify-cli/js_system.rb +5 -5
  182. data/lib/shopify-cli/lazy_delegator.rb +55 -0
  183. data/lib/shopify-cli/messages/messages.rb +9 -16
  184. data/lib/shopify-cli/method_object.rb +104 -0
  185. data/lib/shopify-cli/oauth.rb +25 -25
  186. data/lib/shopify-cli/oauth/servlet.rb +9 -9
  187. data/lib/shopify-cli/options.rb +3 -3
  188. data/lib/shopify-cli/packager.rb +24 -24
  189. data/lib/shopify-cli/partners_api.rb +24 -18
  190. data/lib/shopify-cli/partners_api/organizations.rb +10 -10
  191. data/lib/shopify-cli/process_supervision.rb +7 -7
  192. data/lib/shopify-cli/project.rb +16 -16
  193. data/lib/shopify-cli/project_type.rb +4 -4
  194. data/lib/shopify-cli/resolve_constant.rb +25 -0
  195. data/lib/shopify-cli/resources.rb +1 -1
  196. data/lib/shopify-cli/resources/env_file.rb +9 -9
  197. data/lib/shopify-cli/result.rb +432 -0
  198. data/lib/shopify-cli/shopifolk.rb +6 -8
  199. data/lib/shopify-cli/sub_command.rb +1 -1
  200. data/lib/shopify-cli/task.rb +3 -3
  201. data/lib/shopify-cli/tasks.rb +7 -7
  202. data/lib/shopify-cli/tasks/create_api_client.rb +5 -5
  203. data/lib/shopify-cli/tasks/ensure_dev_store.rb +12 -12
  204. data/lib/shopify-cli/tasks/ensure_env.rb +15 -15
  205. data/lib/shopify-cli/tasks/ensure_loopback_url.rb +4 -4
  206. data/lib/shopify-cli/tasks/select_org_and_shop.rb +25 -24
  207. data/lib/shopify-cli/tasks/update_dashboard_urls.rb +10 -10
  208. data/lib/shopify-cli/transform_data_structure.rb +86 -0
  209. data/lib/shopify-cli/tunnel.rb +36 -30
  210. data/lib/shopify-cli/version.rb +1 -1
  211. data/lib/shopify_cli.rb +57 -52
  212. data/shopify-cli.gemspec +6 -6
  213. data/shopify.fish +1 -1
  214. data/shopify.sh +1 -1
  215. data/vendor/deps/cli-kit/REVISION +1 -1
  216. data/vendor/deps/cli-kit/lib/cli/kit/logger.rb +2 -2
  217. data/vendor/deps/cli-kit/lib/cli/kit/system.rb +3 -3
  218. data/vendor/deps/cli-ui/REVISION +1 -1
  219. data/vendor/deps/cli-ui/lib/cli/ui.rb +26 -22
  220. data/vendor/deps/cli-ui/lib/cli/ui/ansi.rb +4 -6
  221. data/vendor/deps/cli-ui/lib/cli/ui/frame.rb +3 -3
  222. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_stack.rb +8 -9
  223. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style.rb +1 -1
  224. data/vendor/deps/cli-ui/lib/cli/ui/glyph.rb +1 -0
  225. data/vendor/deps/cli-ui/lib/cli/ui/printer.rb +15 -3
  226. data/vendor/deps/cli-ui/lib/cli/ui/prompt/interactive_options.rb +4 -11
  227. data/vendor/deps/cli-ui/lib/cli/ui/spinner.rb +3 -5
  228. data/vendor/deps/cli-ui/lib/cli/ui/terminal.rb +10 -10
  229. data/vendor/deps/cli-ui/lib/cli/ui/version.rb +1 -1
  230. data/vendor/deps/cli-ui/lib/cli/ui/wrap.rb +56 -0
  231. data/vendor/deps/webrick/.gitignore +9 -0
  232. data/vendor/deps/webrick/Gemfile +3 -0
  233. data/vendor/deps/webrick/LICENSE.txt +22 -0
  234. data/vendor/deps/webrick/README.md +61 -0
  235. data/vendor/deps/webrick/Rakefile +10 -0
  236. data/vendor/deps/webrick/lib/webrick.rb +232 -0
  237. data/vendor/deps/webrick/lib/webrick/accesslog.rb +157 -0
  238. data/vendor/deps/webrick/lib/webrick/cgi.rb +313 -0
  239. data/vendor/deps/webrick/lib/webrick/compat.rb +36 -0
  240. data/vendor/deps/webrick/lib/webrick/config.rb +158 -0
  241. data/vendor/deps/webrick/lib/webrick/cookie.rb +172 -0
  242. data/vendor/deps/webrick/lib/webrick/htmlutils.rb +30 -0
  243. data/vendor/deps/webrick/lib/webrick/httpauth.rb +96 -0
  244. data/vendor/deps/webrick/lib/webrick/httpauth/authenticator.rb +117 -0
  245. data/vendor/deps/webrick/lib/webrick/httpauth/basicauth.rb +116 -0
  246. data/vendor/deps/webrick/lib/webrick/httpauth/digestauth.rb +395 -0
  247. data/vendor/deps/webrick/lib/webrick/httpauth/htdigest.rb +132 -0
  248. data/vendor/deps/webrick/lib/webrick/httpauth/htgroup.rb +97 -0
  249. data/vendor/deps/webrick/lib/webrick/httpauth/htpasswd.rb +158 -0
  250. data/vendor/deps/webrick/lib/webrick/httpauth/userdb.rb +53 -0
  251. data/vendor/deps/webrick/lib/webrick/httpproxy.rb +354 -0
  252. data/vendor/deps/webrick/lib/webrick/httprequest.rb +636 -0
  253. data/vendor/deps/webrick/lib/webrick/httpresponse.rb +564 -0
  254. data/vendor/deps/webrick/lib/webrick/https.rb +152 -0
  255. data/vendor/deps/webrick/lib/webrick/httpserver.rb +294 -0
  256. data/vendor/deps/webrick/lib/webrick/httpservlet.rb +23 -0
  257. data/vendor/deps/webrick/lib/webrick/httpservlet/abstract.rb +152 -0
  258. data/vendor/deps/webrick/lib/webrick/httpservlet/cgi_runner.rb +47 -0
  259. data/vendor/deps/webrick/lib/webrick/httpservlet/cgihandler.rb +126 -0
  260. data/vendor/deps/webrick/lib/webrick/httpservlet/erbhandler.rb +88 -0
  261. data/vendor/deps/webrick/lib/webrick/httpservlet/filehandler.rb +552 -0
  262. data/vendor/deps/webrick/lib/webrick/httpservlet/prochandler.rb +47 -0
  263. data/vendor/deps/webrick/lib/webrick/httpstatus.rb +194 -0
  264. data/vendor/deps/webrick/lib/webrick/httputils.rb +512 -0
  265. data/vendor/deps/webrick/lib/webrick/httpversion.rb +76 -0
  266. data/vendor/deps/webrick/lib/webrick/log.rb +156 -0
  267. data/vendor/deps/webrick/lib/webrick/server.rb +381 -0
  268. data/vendor/deps/webrick/lib/webrick/ssl.rb +215 -0
  269. data/vendor/deps/webrick/lib/webrick/utils.rb +265 -0
  270. data/vendor/deps/webrick/lib/webrick/version.rb +18 -0
  271. data/vendor/deps/webrick/webrick.gemspec +74 -0
  272. data/vendor/gen/template/bin/update-deps +9 -9
  273. metadata +83 -35
  274. data/docs/Gemfile +0 -5
  275. data/docs/Gemfile.lock +0 -258
  276. data/docs/_data/nav.yml +0 -35
  277. data/docs/_includes/footer.html +0 -15
  278. data/docs/_includes/head.html +0 -19
  279. data/docs/_includes/sidebar_nav.html +0 -22
  280. data/docs/_includes/toc.html +0 -112
  281. data/docs/_layouts/default.html +0 -79
  282. data/docs/css/docs.css +0 -157
  283. data/docs/images/header.png +0 -0
  284. data/docs/installing-ruby.md +0 -28
  285. data/lib/project_types/extension/features/argo/admin.rb +0 -20
  286. data/lib/project_types/extension/features/argo/base.rb +0 -129
  287. data/lib/project_types/extension/features/argo/checkout.rb +0 -20
  288. data/lib/project_types/extension/forms/register.rb +0 -47
  289. data/lib/project_types/extension/models/type.rb +0 -81
  290. data/lib/project_types/extension/models/types/checkout_post_purchase.rb +0 -23
  291. data/lib/project_types/extension/models/types/product_subscription.rb +0 -24
  292. data/lib/project_types/node/commands/generate/billing.rb +0 -39
  293. data/lib/project_types/node/commands/generate/page.rb +0 -59
  294. data/lib/project_types/node/commands/generate/webhook.rb +0 -37
  295. data/lib/project_types/script/commands/disable.rb +0 -25
  296. data/lib/project_types/script/commands/enable.rb +0 -78
  297. data/lib/project_types/script/graphql/shop_script_delete.graphql +0 -14
  298. data/lib/project_types/script/graphql/shop_script_update_or_create.graphql +0 -28
  299. data/lib/project_types/script/layers/application/disable_script.rb +0 -21
  300. data/lib/project_types/script/layers/application/enable_script.rb +0 -23
  301. data/lib/project_types/script/layers/domain/script.rb +0 -18
  302. data/lib/project_types/script/layers/infrastructure/script_repository.rb +0 -47
  303. data/lib/project_types/script/script_project.rb +0 -54
  304. data/lib/project_types/script/templates/ts/as-pect.config.js +0 -27
  305. data/lib/project_types/script/templates/ts/as-pect.d.ts +0 -1
@@ -1,5 +1,5 @@
1
- require 'shopify_cli'
2
- require 'optparse'
1
+ require "shopify_cli"
2
+ require "optparse"
3
3
 
4
4
  module ShopifyCli
5
5
  class AdminAPI
@@ -36,7 +36,7 @@ module ShopifyCli
36
36
 
37
37
  if @help
38
38
  output = display_parent_extended_help
39
- output += "\n#{@ctx.message('core.populate.options.header', camel_case_resource_type)}\n"
39
+ output += "\n#{@ctx.message("core.populate.options.header", camel_case_resource_type)}\n"
40
40
  output += resource_options.help
41
41
  return @ctx.puts(output)
42
42
  end
@@ -45,7 +45,7 @@ module ShopifyCli
45
45
 
46
46
  if @silent
47
47
  spin_group = CLI::UI::SpinGroup.new
48
- spin_group.add(@ctx.message('core.populate.populating', @count, camel_case_resource_type)) do |spinner|
48
+ spin_group.add(@ctx.message("core.populate.populating", @count, camel_case_resource_type)) do |spinner|
49
49
  populate
50
50
  spinner.update_title(completion_message)
51
51
  end
@@ -78,18 +78,18 @@ module ShopifyCli
78
78
  opts.on(
79
79
  "-c #{DEFAULT_COUNT}",
80
80
  "--count=#{DEFAULT_COUNT}",
81
- @ctx.message('core.populate.options.count_help')
81
+ @ctx.message("core.populate.options.count_help")
82
82
  ) do |value|
83
83
  @count = value.to_i
84
84
  end
85
85
 
86
- opts.on('-h', '--help', 'print help') do |value|
86
+ opts.on("-h", "--help", "print help") do |value|
87
87
  @help = value
88
88
  end
89
89
 
90
90
  opts.on("--silent") { |v| @silent = v }
91
91
 
92
- opts.on('--shop=', '-s') { |value| @shop = value }
92
+ opts.on("--shop=", "-s") { |value| @shop = value }
93
93
  end
94
94
  end
95
95
 
@@ -100,12 +100,12 @@ module ShopifyCli
100
100
  end
101
101
 
102
102
  def input_options
103
- schema.type(self.class.input_type)['inputFields'].each do |field|
103
+ schema.type(self.class.input_type)["inputFields"].each do |field|
104
104
  resource_options.on(
105
- "--#{field['name']}=#{field['defaultValue']}",
106
- field['description']
105
+ "--#{field["name"]}=#{field["defaultValue"]}",
106
+ field["description"]
107
107
  ) do |value|
108
- @input[field['name']] = value
108
+ @input[field["name"]] = value
109
109
  end
110
110
  end
111
111
  end
@@ -120,14 +120,14 @@ module ShopifyCli
120
120
  resp = AdminAPI.query(
121
121
  @ctx, "create_#{snake_case_resource_type}", **kwargs
122
122
  )
123
- @ctx.abort(resp['errors']) if resp['errors']
124
- @ctx.done(message(resp['data'])) unless @silent
123
+ @ctx.abort(resp["errors"]) if resp["errors"]
124
+ @ctx.done(message(resp["data"])) unless @silent
125
125
  end
126
126
 
127
127
  def completion_message
128
128
  plural = @count > 1 ? "s" : ""
129
129
  @ctx.message(
130
- 'core.populate.completion_message',
130
+ "core.populate.completion_message",
131
131
  @count,
132
132
  "#{camel_case_resource_type}#{plural}",
133
133
  Project.current.env.shop,
@@ -142,7 +142,7 @@ module ShopifyCli
142
142
  end
143
143
 
144
144
  def price
145
- format('%.2f', rand(1..10))
145
+ format("%.2f", rand(1..10))
146
146
  end
147
147
 
148
148
  private
@@ -155,7 +155,7 @@ module ShopifyCli
155
155
  end
156
156
 
157
157
  def camel_case_resource_type
158
- @camel_case_resource_type ||= self.class.to_s.split('::').last
158
+ @camel_case_resource_type ||= self.class.to_s.split("::").last
159
159
  end
160
160
 
161
161
  def snake_case_resource_type
@@ -167,7 +167,7 @@ module ShopifyCli
167
167
  end
168
168
 
169
169
  def parent_command_klass
170
- @parent_command_klass ||= Module.const_get(self.class.to_s.split('::')[0..-2].join('::'))
170
+ @parent_command_klass ||= Module.const_get(self.class.to_s.split("::")[0..-2].join("::"))
171
171
  end
172
172
  end
173
173
  end
@@ -1,4 +1,4 @@
1
- require 'shopify_cli'
1
+ require "shopify_cli"
2
2
 
3
3
  module ShopifyCli
4
4
  class AdminAPI
@@ -7,7 +7,7 @@ module ShopifyCli
7
7
  def get(ctx)
8
8
  unless ShopifyCli::DB.exists?(:shopify_admin_schema)
9
9
  shop = Project.current.env.shop || get_shop(ctx)
10
- schema = AdminAPI.query(ctx, 'admin_introspection', shop: shop)
10
+ schema = AdminAPI.query(ctx, "admin_introspection", shop: shop)
11
11
  ShopifyCli::DB.set(shopify_admin_schema: JSON.dump(schema))
12
12
  end
13
13
  # This is ruby magic for making a new hash with another hash.
@@ -30,7 +30,7 @@ module ShopifyCli
30
30
  data = self["data"]
31
31
  schema = data["__schema"]
32
32
  schema["types"].find do |object|
33
- object['name'] == name.to_s
33
+ object["name"] == name.to_s
34
34
  end
35
35
  end
36
36
 
@@ -1,4 +1,4 @@
1
- require 'shopify_cli'
1
+ require "shopify_cli"
2
2
 
3
3
  module ShopifyCli
4
4
  class API
@@ -19,49 +19,36 @@ module ShopifyCli
19
19
  class APIRequestThrottledError < APIRequestRetriableError; end
20
20
 
21
21
  def self.gid_to_id(gid)
22
- gid.split('/').last
22
+ gid.split("/").last
23
23
  end
24
24
 
25
25
  def query(query_name, variables: {})
26
26
  _, resp = request(
27
- load_query(query_name),
28
- variables: variables,
29
- headers: default_headers,
30
- graphql_url: url,
27
+ body: JSON.dump(query: load_query(query_name).tr("\n", ""), variables: variables),
28
+ url: url,
31
29
  )
32
30
  ctx.debug(resp)
33
31
  resp
34
32
  rescue API::APIRequestServerError, API::APIRequestUnexpectedError => e
35
- ctx.puts(ctx.message('core.api.error.internal_server_error'))
36
- ctx.debug(ctx.message('core.api.error.internal_server_error_debug', e.message))
33
+ ctx.puts(ctx.message("core.api.error.internal_server_error"))
34
+ ctx.debug(ctx.message("core.api.error.internal_server_error_debug", e.message))
37
35
  end
38
36
 
39
- protected
40
-
41
- def load_query(name)
42
- project_type = ShopifyCli::Project.current_project_type
43
- project_file_path = File.join(
44
- ShopifyCli::ROOT, 'lib', 'project_types', project_type.to_s, 'graphql', "#{name}.graphql"
45
- )
46
- if !project_type.nil? && File.exist?(project_file_path)
47
- File.read(project_file_path)
48
- else
49
- File.read(File.join(ShopifyCli::ROOT, 'lib', 'graphql', "#{name}.graphql"))
50
- end
51
- end
52
-
53
- private
54
-
55
- def request(body, graphql_url:, variables: {}, headers: {})
37
+ def request(url:, body: nil, headers: {}, method: "POST")
56
38
  CLI::Kit::Util.begin do
57
- uri = URI.parse(graphql_url)
39
+ uri = URI.parse(url)
58
40
  unless uri.is_a?(URI::HTTP)
59
- ctx.abort("Invalid URL: #{graphql_url}")
41
+ ctx.abort(ctx.message("core.api.error.invalid_url", url))
60
42
  end
61
43
 
62
44
  # we delay this require so as to avoid a performance hit on starting the CLI
63
- require 'shopify-cli/http_request'
64
- response = HttpRequest.call(uri, body, variables, headers)
45
+ require "shopify-cli/http_request"
46
+ headers = default_headers.merge(headers)
47
+ response = if method == "POST"
48
+ HttpRequest.post(uri, body, headers)
49
+ elsif method == "GET"
50
+ HttpRequest.get(uri, body, headers)
51
+ end
65
52
 
66
53
  case response.code.to_i
67
54
  when 200..399
@@ -84,15 +71,31 @@ module ShopifyCli
84
71
  end
85
72
  end
86
73
 
74
+ protected
75
+
76
+ def load_query(name)
77
+ project_type = ShopifyCli::Project.current_project_type
78
+ project_file_path = File.join(
79
+ ShopifyCli::ROOT, "lib", "project_types", project_type.to_s, "graphql", "#{name}.graphql"
80
+ )
81
+ if !project_type.nil? && File.exist?(project_file_path)
82
+ File.read(project_file_path)
83
+ else
84
+ File.read(File.join(ShopifyCli::ROOT, "lib", "graphql", "#{name}.graphql"))
85
+ end
86
+ end
87
+
88
+ private
89
+
87
90
  def current_sha
88
91
  @current_sha ||= Git.sha(dir: ShopifyCli::ROOT)
89
92
  end
90
93
 
91
94
  def default_headers
92
95
  {
93
- 'User-Agent' => "Shopify App CLI #{ShopifyCli::VERSION} #{current_sha} | #{ctx.uname}",
96
+ "User-Agent" => "Shopify App CLI #{ShopifyCli::VERSION} #{current_sha} | #{ctx.uname}",
94
97
  }.tap do |headers|
95
- headers['X-Shopify-Cli-Employee'] = '1' if Shopifolk.acting_as_shopify_organization?
98
+ headers["X-Shopify-Cli-Employee"] = "1" if Shopifolk.acting_as_shopify_organization?
96
99
  end.merge(auth_headers(token))
97
100
  end
98
101
 
@@ -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,97 +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'
10
- subcommand :ShopifolkBeta, 'shopifolk-beta'
8
+ subcommand :Feature, "feature"
9
+ subcommand :Analytics, "analytics"
11
10
 
12
11
  def call(*)
13
12
  @ctx.puts(self.class.help)
14
13
  end
15
14
 
16
15
  def self.help
17
- ShopifyCli::Context.message('core.config.help', ShopifyCli::TOOL_NAME)
16
+ ShopifyCli::Context.message("core.config.help", ShopifyCli::TOOL_NAME)
18
17
  end
19
18
 
20
19
  class Feature < ShopifyCli::SubCommand
21
20
  def self.help
22
- ShopifyCli::Context.message('core.config.feature.help', ShopifyCli::TOOL_NAME)
21
+ ShopifyCli::Context.message("core.config.feature.help", ShopifyCli::TOOL_NAME)
23
22
  end
24
23
 
25
24
  options do |parser, flags|
26
- parser.on('--enable') { flags[:action] = 'enable' }
27
- parser.on('--disable') { flags[:action] = 'disable' }
28
- 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" }
29
28
  end
30
29
 
31
30
  def call(args, _name)
32
31
  feature_name = args.shift
33
- 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?
34
33
  is_enabled = ShopifyCli::Feature.enabled?(feature_name)
35
- if options.flags[:action] == 'disable' && is_enabled
34
+ if options.flags[:action] == "disable" && is_enabled
36
35
  ShopifyCli::Feature.disable(feature_name)
37
- @ctx.puts(@ctx.message('core.config.feature.disabled', feature_name))
38
- 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
39
38
  ShopifyCli::Feature.enable(feature_name)
40
- @ctx.puts(@ctx.message('core.config.feature.enabled', feature_name))
39
+ @ctx.puts(@ctx.message("core.config.feature.enabled", feature_name))
41
40
  elsif is_enabled
42
- @ctx.puts(@ctx.message('core.config.feature.is_enabled', feature_name))
41
+ @ctx.puts(@ctx.message("core.config.feature.is_enabled", feature_name))
43
42
  else
44
- @ctx.puts(@ctx.message('core.config.feature.is_disabled', feature_name))
43
+ @ctx.puts(@ctx.message("core.config.feature.is_disabled", feature_name))
45
44
  end
46
45
  end
47
46
  end
48
47
 
49
48
  class Analytics < ShopifyCli::SubCommand
50
49
  def self.help
51
- ShopifyCli::Context.message('core.config.analytics.help', ShopifyCli::TOOL_NAME)
50
+ ShopifyCli::Context.message("core.config.analytics.help", ShopifyCli::TOOL_NAME)
52
51
  end
53
52
 
54
53
  options do |parser, flags|
55
- parser.on('--enable') { flags[:action] = 'enable' }
56
- parser.on('--disable') { flags[:action] = 'disable' }
57
- 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" }
58
57
  end
59
58
 
60
59
  def call(_args, _name)
61
- is_enabled = ShopifyCli::Config.get_bool('analytics', 'enabled')
62
- if options.flags[:action] == 'disable' && is_enabled
63
- ShopifyCli::Config.set('analytics', 'enabled', false)
64
- @ctx.puts(@ctx.message('core.config.analytics.disabled'))
65
- elsif options.flags[:action] == 'enable' && !is_enabled
66
- ShopifyCli::Config.set('analytics', 'enabled', true)
67
- @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"))
68
67
  elsif is_enabled
69
- @ctx.puts(@ctx.message('core.config.analytics.is_enabled'))
68
+ @ctx.puts(@ctx.message("core.config.analytics.is_enabled"))
70
69
  else
71
- @ctx.puts(@ctx.message('core.config.analytics.is_disabled'))
72
- end
73
- end
74
- end
75
-
76
- class ShopifolkBeta < ShopifyCli::SubCommand
77
- options do |parser, flags|
78
- parser.on('--enable') { flags[:action] = 'enable' }
79
- parser.on('--disable') { flags[:action] = 'disable' }
80
- parser.on('--status') { flags[:action] = 'status' }
81
- end
82
-
83
- def call(_args, _name)
84
- is_enabled = ShopifyCli::Config.get_bool('shopifolk-beta', 'enabled')
85
- if options.flags[:action] == 'disable' && is_enabled
86
- ShopifyCli::Config.set('shopifolk-beta', 'enabled', false)
87
- @ctx.puts(@ctx.message('core.config.shopifolk_beta.disabled'))
88
- elsif options.flags[:action] == 'enable' && !is_enabled
89
- ShopifyCli::Config.set('shopifolk-beta', 'enabled', true)
90
- @ctx.puts(@ctx.message('core.config.shopifolk_beta.enabled'))
91
- elsif is_enabled
92
- @ctx.puts(@ctx.message('core.config.shopifolk_beta.is_enabled'))
93
- else
94
- @ctx.puts(@ctx.message('core.config.shopifolk_beta.is_disabled'))
70
+ @ctx.puts(@ctx.message("core.config.analytics.is_disabled"))
95
71
  end
96
72
  end
97
73
  end
@@ -1,4 +1,4 @@
1
- require 'shopify_cli'
1
+ require "shopify_cli"
2
2
 
3
3
  module ShopifyCli
4
4
  module Commands
@@ -10,13 +10,13 @@ module ShopifyCli
10
10
  end
11
11
 
12
12
  def help
13
- ShopifyCli::Context.message('core.connect.help', ShopifyCli::TOOL_NAME)
13
+ ShopifyCli::Context.message("core.connect.help", ShopifyCli::TOOL_NAME)
14
14
  end
15
15
  end
16
16
 
17
17
  def call(args, command_name)
18
18
  if Project.current&.env
19
- @ctx.puts(@ctx.message('core.connect.already_connected_warning'))
19
+ @ctx.puts(@ctx.message("core.connect.already_connected_warning"))
20
20
  end
21
21
 
22
22
  project_type = ask_project_type
@@ -25,15 +25,15 @@ module ShopifyCli
25
25
 
26
26
  if klass
27
27
  klass.ctx = @ctx
28
- klass.call(args, command_name, 'connect')
28
+ klass.call(args, command_name, "connect")
29
29
  else
30
30
  app = default_connect(project_type)
31
- @ctx.done(@ctx.message('core.connect.connected', app))
31
+ @ctx.done(@ctx.message("core.connect.connected", app))
32
32
  end
33
33
  end
34
34
 
35
35
  def ask_project_type
36
- 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|
37
37
  ShopifyCli::Commands::Create.all_visible_type.each do |type|
38
38
  handler.option(type.project_name) { type.project_type }
39
39
  end
@@ -42,9 +42,9 @@ module ShopifyCli
42
42
 
43
43
  def default_connect(project_type)
44
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']
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
48
  end
49
49
 
50
50
  def write_cli_yml(project_type, org_id)
@@ -53,7 +53,7 @@ module ShopifyCli
53
53
  project_type: project_type,
54
54
  organization_id: org_id,
55
55
  )
56
- @ctx.done(@ctx.message('core.connect.cli_yml_saved'))
56
+ @ctx.done(@ctx.message("core.connect.cli_yml_saved"))
57
57
  end
58
58
 
59
59
  def get_app(apps, api_key)