shopify-cli 1.6.0 → 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 (179) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/Gemfile +12 -12
  4. data/Rakefile +32 -30
  5. data/bin/load_shopify.rb +6 -6
  6. data/bin/shopify +2 -2
  7. data/ext/shopify-cli/extconf.rb +7 -7
  8. data/lib/docgen/markdown.rb +11 -11
  9. data/lib/{project_types/extension/graphql → graphql}/get_app_by_api_key.graphql +0 -0
  10. data/lib/project_types/extension/cli.rb +52 -45
  11. data/lib/project_types/extension/commands/build.rb +3 -3
  12. data/lib/project_types/extension/commands/create.rb +16 -9
  13. data/lib/project_types/extension/commands/extension_command.rb +8 -5
  14. data/lib/project_types/extension/commands/push.rb +8 -8
  15. data/lib/project_types/extension/commands/register.rb +19 -30
  16. data/lib/project_types/extension/commands/serve.rb +2 -2
  17. data/lib/project_types/extension/commands/tunnel.rb +12 -12
  18. data/lib/project_types/extension/extension_project.rb +4 -4
  19. data/lib/project_types/extension/extension_project_keys.rb +4 -4
  20. data/lib/project_types/extension/features/argo.rb +13 -13
  21. data/lib/project_types/extension/features/argo_config.rb +5 -5
  22. data/lib/project_types/extension/features/argo_dependencies.rb +5 -5
  23. data/lib/project_types/extension/features/argo_setup.rb +2 -2
  24. data/lib/project_types/extension/features/argo_setup_steps.rb +4 -4
  25. data/lib/project_types/extension/forms/create.rb +28 -34
  26. data/lib/project_types/extension/forms/questions/ask_app.rb +53 -0
  27. data/lib/project_types/extension/forms/questions/ask_name.rb +40 -0
  28. data/lib/project_types/extension/forms/questions/ask_type.rb +36 -0
  29. data/lib/project_types/extension/messages/messages.rb +53 -52
  30. data/lib/project_types/extension/models/lazy_specification_handler.rb +12 -0
  31. data/lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb +1 -1
  32. data/lib/project_types/extension/models/specification_handlers/default.rb +2 -2
  33. data/lib/project_types/extension/models/specifications.rb +3 -3
  34. data/lib/project_types/extension/tasks/configure_features.rb +4 -4
  35. data/lib/project_types/extension/tasks/converters/app_converter.rb +6 -6
  36. data/lib/project_types/extension/tasks/converters/registration_converter.rb +6 -6
  37. data/lib/project_types/extension/tasks/converters/validation_error_converter.rb +4 -4
  38. data/lib/project_types/extension/tasks/converters/version_converter.rb +7 -7
  39. data/lib/project_types/extension/tasks/create_extension.rb +4 -4
  40. data/lib/project_types/extension/tasks/fetch_specifications.rb +4 -4
  41. data/lib/project_types/extension/tasks/get_app.rb +4 -4
  42. data/lib/project_types/extension/tasks/get_apps.rb +3 -3
  43. data/lib/project_types/extension/tasks/update_draft.rb +4 -4
  44. data/lib/project_types/extension/tasks/user_errors.rb +4 -4
  45. data/lib/project_types/node/cli.rb +19 -19
  46. data/lib/project_types/node/commands/connect.rb +3 -3
  47. data/lib/project_types/node/commands/create.rb +40 -38
  48. data/lib/project_types/node/commands/deploy.rb +4 -4
  49. data/lib/project_types/node/commands/deploy/heroku.rb +24 -24
  50. data/lib/project_types/node/commands/generate.rb +8 -8
  51. data/lib/project_types/node/commands/open.rb +2 -2
  52. data/lib/project_types/node/commands/populate.rb +6 -6
  53. data/lib/project_types/node/commands/populate/customer.rb +5 -5
  54. data/lib/project_types/node/commands/populate/draft_order.rb +5 -5
  55. data/lib/project_types/node/commands/populate/product.rb +5 -5
  56. data/lib/project_types/node/commands/serve.rb +9 -9
  57. data/lib/project_types/node/commands/tunnel.rb +7 -7
  58. data/lib/project_types/node/forms/create.rb +7 -7
  59. data/lib/project_types/node/messages/messages.rb +3 -3
  60. data/lib/project_types/rails/cli.rb +21 -21
  61. data/lib/project_types/rails/commands/connect.rb +3 -3
  62. data/lib/project_types/rails/commands/create.rb +51 -48
  63. data/lib/project_types/rails/commands/deploy.rb +4 -4
  64. data/lib/project_types/rails/commands/deploy/heroku.rb +30 -30
  65. data/lib/project_types/rails/commands/generate.rb +7 -7
  66. data/lib/project_types/rails/commands/generate/webhook.rb +6 -6
  67. data/lib/project_types/rails/commands/open.rb +2 -2
  68. data/lib/project_types/rails/commands/populate.rb +6 -6
  69. data/lib/project_types/rails/commands/populate/customer.rb +5 -5
  70. data/lib/project_types/rails/commands/populate/draft_order.rb +5 -5
  71. data/lib/project_types/rails/commands/populate/product.rb +5 -5
  72. data/lib/project_types/rails/commands/serve.rb +11 -11
  73. data/lib/project_types/rails/commands/tunnel.rb +7 -7
  74. data/lib/project_types/rails/forms/create.rb +23 -23
  75. data/lib/project_types/rails/gem.rb +23 -23
  76. data/lib/project_types/rails/messages/messages.rb +4 -4
  77. data/lib/project_types/rails/ruby.rb +2 -2
  78. data/lib/project_types/script/cli.rb +40 -40
  79. data/lib/project_types/script/commands/create.rb +9 -8
  80. data/lib/project_types/script/commands/disable.rb +3 -3
  81. data/lib/project_types/script/commands/enable.rb +9 -7
  82. data/lib/project_types/script/commands/push.rb +5 -4
  83. data/lib/project_types/script/errors.rb +17 -0
  84. data/lib/project_types/script/forms/create.rb +5 -5
  85. data/lib/project_types/script/graphql/app_script_update_or_create.graphql +2 -0
  86. data/lib/project_types/script/layers/application/build_script.rb +6 -8
  87. data/lib/project_types/script/layers/application/create_script.rb +2 -2
  88. data/lib/project_types/script/layers/application/disable_script.rb +2 -2
  89. data/lib/project_types/script/layers/application/enable_script.rb +2 -2
  90. data/lib/project_types/script/layers/application/project_dependencies.rb +4 -4
  91. data/lib/project_types/script/layers/application/push_script.rb +4 -12
  92. data/lib/project_types/script/layers/domain/push_package.rb +5 -1
  93. data/lib/project_types/script/layers/infrastructure/assemblyscript_project_creator.rb +3 -3
  94. data/lib/project_types/script/layers/infrastructure/assemblyscript_task_runner.rb +10 -10
  95. data/lib/project_types/script/layers/infrastructure/errors.rb +1 -1
  96. data/lib/project_types/script/layers/infrastructure/extension_point_repository.rb +2 -2
  97. data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +12 -17
  98. data/lib/project_types/script/layers/infrastructure/rust_project_creator.rb +4 -4
  99. data/lib/project_types/script/layers/infrastructure/rust_task_runner.rb +1 -1
  100. data/lib/project_types/script/layers/infrastructure/script_service.rb +18 -16
  101. data/lib/project_types/script/messages/messages.rb +14 -8
  102. data/lib/project_types/script/script_project.rb +27 -5
  103. data/lib/project_types/script/ui/error_handler.rb +80 -68
  104. data/lib/project_types/script/ui/printing_spinner.rb +1 -1
  105. data/lib/project_types/script/ui/strict_spinner.rb +1 -1
  106. data/lib/project_types/theme/cli.rb +19 -19
  107. data/lib/project_types/theme/commands/connect.rb +12 -12
  108. data/lib/project_types/theme/commands/create.rb +11 -11
  109. data/lib/project_types/theme/commands/deploy.rb +8 -8
  110. data/lib/project_types/theme/commands/generate.rb +3 -3
  111. data/lib/project_types/theme/commands/generate/env.rb +15 -15
  112. data/lib/project_types/theme/commands/push.rb +15 -15
  113. data/lib/project_types/theme/commands/serve.rb +5 -5
  114. data/lib/project_types/theme/forms/connect.rb +4 -4
  115. data/lib/project_types/theme/forms/create.rb +5 -5
  116. data/lib/project_types/theme/tasks/ensure_themekit_installed.rb +22 -22
  117. data/lib/project_types/theme/themekit.rb +15 -15
  118. data/lib/rubygems_plugin.rb +3 -3
  119. data/lib/shopify-cli/admin_api.rb +11 -11
  120. data/lib/shopify-cli/admin_api/populate_resource_command.rb +17 -17
  121. data/lib/shopify-cli/admin_api/schema.rb +3 -3
  122. data/lib/shopify-cli/api.rb +10 -10
  123. data/lib/shopify-cli/command.rb +1 -1
  124. data/lib/shopify-cli/commands.rb +9 -9
  125. data/lib/shopify-cli/commands/config.rb +28 -52
  126. data/lib/shopify-cli/commands/connect.rb +10 -10
  127. data/lib/shopify-cli/commands/create.rb +5 -5
  128. data/lib/shopify-cli/commands/help.rb +6 -6
  129. data/lib/shopify-cli/commands/logout.rb +3 -3
  130. data/lib/shopify-cli/commands/system.rb +32 -32
  131. data/lib/shopify-cli/commands/version.rb +2 -2
  132. data/lib/shopify-cli/context.rb +23 -23
  133. data/lib/shopify-cli/core.rb +4 -4
  134. data/lib/shopify-cli/core/entry_point.rb +5 -5
  135. data/lib/shopify-cli/core/executor.rb +1 -1
  136. data/lib/shopify-cli/core/help_resolver.rb +2 -2
  137. data/lib/shopify-cli/core/monorail.rb +16 -16
  138. data/lib/shopify-cli/db.rb +2 -2
  139. data/lib/shopify-cli/feature.rb +1 -1
  140. data/lib/shopify-cli/form.rb +1 -1
  141. data/lib/shopify-cli/git.rb +17 -17
  142. data/lib/shopify-cli/helpers.rb +1 -1
  143. data/lib/shopify-cli/helpers/haikunator.rb +1 -1
  144. data/lib/shopify-cli/heroku.rb +28 -28
  145. data/lib/shopify-cli/http_request.rb +2 -2
  146. data/lib/shopify-cli/js_deps.rb +12 -12
  147. data/lib/shopify-cli/js_system.rb +5 -5
  148. data/lib/shopify-cli/lazy_delegator.rb +55 -0
  149. data/lib/shopify-cli/messages/messages.rb +4 -14
  150. data/lib/shopify-cli/oauth.rb +25 -25
  151. data/lib/shopify-cli/oauth/servlet.rb +9 -9
  152. data/lib/shopify-cli/options.rb +3 -3
  153. data/lib/shopify-cli/packager.rb +24 -24
  154. data/lib/shopify-cli/partners_api.rb +16 -16
  155. data/lib/shopify-cli/partners_api/organizations.rb +10 -10
  156. data/lib/shopify-cli/process_supervision.rb +7 -7
  157. data/lib/shopify-cli/project.rb +16 -16
  158. data/lib/shopify-cli/project_type.rb +3 -3
  159. data/lib/shopify-cli/resources.rb +1 -1
  160. data/lib/shopify-cli/resources/env_file.rb +9 -9
  161. data/lib/shopify-cli/result.rb +8 -8
  162. data/lib/shopify-cli/shopifolk.rb +6 -9
  163. data/lib/shopify-cli/sub_command.rb +1 -1
  164. data/lib/shopify-cli/task.rb +3 -3
  165. data/lib/shopify-cli/tasks.rb +7 -7
  166. data/lib/shopify-cli/tasks/create_api_client.rb +5 -5
  167. data/lib/shopify-cli/tasks/ensure_dev_store.rb +11 -11
  168. data/lib/shopify-cli/tasks/ensure_env.rb +15 -15
  169. data/lib/shopify-cli/tasks/ensure_loopback_url.rb +4 -4
  170. data/lib/shopify-cli/tasks/select_org_and_shop.rb +19 -19
  171. data/lib/shopify-cli/tasks/update_dashboard_urls.rb +10 -10
  172. data/lib/shopify-cli/transform_data_structure.rb +86 -0
  173. data/lib/shopify-cli/tunnel.rb +30 -30
  174. data/lib/shopify-cli/version.rb +1 -1
  175. data/lib/shopify_cli.rb +56 -54
  176. data/shopify-cli.gemspec +6 -6
  177. data/vendor/gen/template/bin/update-deps +9 -9
  178. metadata +9 -4
  179. data/lib/project_types/extension/forms/register.rb +0 -47
@@ -1,29 +1,29 @@
1
1
  module Theme
2
2
  module Tasks
3
3
  class EnsureThemekitInstalled < ShopifyCli::Task
4
- URL = 'https://shopify-themekit.s3.amazonaws.com/releases/latest.json'
4
+ URL = "https://shopify-themekit.s3.amazonaws.com/releases/latest.json"
5
5
  OSMAP = {
6
- mac: 'darwin-amd64',
7
- linux: 'linux-amd64',
8
- windows: 'windows-amd64',
6
+ mac: "darwin-amd64",
7
+ linux: "linux-amd64",
8
+ windows: "windows-amd64",
9
9
  }
10
10
  VERSION_CHECK_INTERVAL = 604800
11
- VERSION_CHECK_SECTION = 'themekit_version_check'
12
- LAST_CHECKED_AT_FIELD = 'last_checked_at'
11
+ VERSION_CHECK_SECTION = "themekit_version_check"
12
+ LAST_CHECKED_AT_FIELD = "last_checked_at"
13
13
 
14
14
  def call(ctx)
15
15
  _out, stat = ctx.capture2e(Themekit::THEMEKIT)
16
16
  unless stat.success?
17
- CLI::UI::Frame.open(ctx.message('theme.tasks.ensure_themekit_installed.installing_themekit')) do
17
+ CLI::UI::Frame.open(ctx.message("theme.tasks.ensure_themekit_installed.installing_themekit")) do
18
18
  install_themekit(ctx)
19
19
  end
20
20
  end
21
21
 
22
22
  now = Time.now.to_i
23
23
  if ShopifyCli::Feature.enabled?(:themekit_auto_update) && (time_of_last_check + VERSION_CHECK_INTERVAL) < now
24
- CLI::UI::Frame.open(ctx.message('theme.tasks.ensure_themekit_installed.updating_themekit')) do
24
+ CLI::UI::Frame.open(ctx.message("theme.tasks.ensure_themekit_installed.updating_themekit")) do
25
25
  unless Themekit.update(ctx)
26
- ctx.abort(ctx.message('theme.tasks.ensure_themekit_installed.errors.update_fail'))
26
+ ctx.abort(ctx.message("theme.tasks.ensure_themekit_installed.errors.update_fail"))
27
27
  end
28
28
  update_time_of_last_check(now)
29
29
  end
@@ -33,32 +33,32 @@ module Theme
33
33
  private
34
34
 
35
35
  def install_themekit(ctx)
36
- require 'json'
37
- require 'fileutils'
38
- require 'digest'
39
- require 'open-uri'
36
+ require "json"
37
+ require "fileutils"
38
+ require "digest"
39
+ require "open-uri"
40
40
 
41
41
  begin
42
42
  begin
43
43
  releases = JSON.parse(Net::HTTP.get(URI(URL)))
44
44
  release = releases["platforms"].find { |r| r["name"] == OSMAP[ctx.os] }
45
45
  rescue
46
- ctx.abort(ctx.message('theme.tasks.ensure_themekit_installed.errors.releases_fail'))
46
+ ctx.abort(ctx.message("theme.tasks.ensure_themekit_installed.errors.releases_fail"))
47
47
  end
48
48
 
49
- ctx.puts(ctx.message('theme.tasks.ensure_themekit_installed.downloading', releases['version']))
50
- _out, stat = ctx.capture2e('curl', '-o', Themekit::THEMEKIT, release["url"])
51
- ctx.abort(ctx.message('theme.tasks.ensure_themekit_installed.errors.write_fail')) unless stat.success?
49
+ ctx.puts(ctx.message("theme.tasks.ensure_themekit_installed.downloading", releases["version"]))
50
+ _out, stat = ctx.capture2e("curl", "-o", Themekit::THEMEKIT, release["url"])
51
+ ctx.abort(ctx.message("theme.tasks.ensure_themekit_installed.errors.write_fail")) unless stat.success?
52
52
 
53
- ctx.puts(ctx.message('theme.tasks.ensure_themekit_installed.verifying'))
54
- if Digest::MD5.file(Themekit::THEMEKIT) == release['digest']
53
+ ctx.puts(ctx.message("theme.tasks.ensure_themekit_installed.verifying"))
54
+ if Digest::MD5.file(Themekit::THEMEKIT) == release["digest"]
55
55
  FileUtils.chmod("+x", Themekit::THEMEKIT)
56
- ctx.puts(ctx.message('theme.tasks.ensure_themekit_installed.successful'))
56
+ ctx.puts(ctx.message("theme.tasks.ensure_themekit_installed.successful"))
57
57
 
58
- auto = CLI::UI.confirm(ctx.message('theme.tasks.ensure_themekit_installed.auto_update'))
58
+ auto = CLI::UI.confirm(ctx.message("theme.tasks.ensure_themekit_installed.auto_update"))
59
59
  ShopifyCli::Feature.set(:themekit_auto_update, auto)
60
60
  else
61
- ctx.abort(ctx.message('theme.tasks.ensure_themekit_installed.errors.digest_fail'))
61
+ ctx.abort(ctx.message("theme.tasks.ensure_themekit_installed.errors.digest_fail"))
62
62
  end
63
63
  rescue StandardError, ShopifyCli::Abort => e
64
64
  FileUtils.rm(Themekit::THEMEKIT) if File.exist?(Themekit::THEMEKIT)
@@ -12,7 +12,7 @@ module Theme
12
12
  end
13
13
 
14
14
  def connect(ctx, store:, password:, themeid:, env:)
15
- command = build_command('get', env)
15
+ command = build_command("get", env)
16
16
  command << "--password=#{password}"
17
17
  command << "--store=#{store}"
18
18
  command << "--themeid=#{themeid}"
@@ -22,7 +22,7 @@ module Theme
22
22
  end
23
23
 
24
24
  def create(ctx, password:, store:, name:, env:)
25
- command = build_command('new', env)
25
+ command = build_command("new", env)
26
26
  command << "--password=#{password}"
27
27
  command << "--store=#{store}"
28
28
  command << "--name=#{name}"
@@ -33,11 +33,11 @@ module Theme
33
33
 
34
34
  def deploy(ctx, flags: nil, env:)
35
35
  unless push(ctx, flags: flags, env: env)
36
- ctx.abort(ctx.message('theme.deploy.push_fail'))
36
+ ctx.abort(ctx.message("theme.deploy.push_fail"))
37
37
  end
38
- ctx.done(ctx.message('theme.deploy.info.pushed'))
38
+ ctx.done(ctx.message("theme.deploy.info.pushed"))
39
39
 
40
- command = build_command('publish', env)
40
+ command = build_command("publish", env)
41
41
  (command << flags).compact!
42
42
  command.flatten!
43
43
 
@@ -46,7 +46,7 @@ module Theme
46
46
  end
47
47
 
48
48
  def generate_env(ctx, store:, password:, themeid:, env:)
49
- command = build_command('configure', env)
49
+ command = build_command("configure", env)
50
50
  command << "--password=#{password}"
51
51
  command << "--store=#{store}"
52
52
  command << "--themeid=#{themeid}"
@@ -56,7 +56,7 @@ module Theme
56
56
  end
57
57
 
58
58
  def push(ctx, files: nil, flags: nil, remove: false, env:)
59
- action = remove ? 'remove' : 'deploy'
59
+ action = remove ? "remove" : "deploy"
60
60
  command = build_command(action, env)
61
61
 
62
62
  (command << files << flags).compact!
@@ -75,28 +75,28 @@ module Theme
75
75
  path: "themes.json",
76
76
  )
77
77
  rescue ShopifyCli::API::APIRequestUnauthorizedError
78
- ctx.abort(ctx.message('theme.themekit.query_themes.bad_password'))
78
+ ctx.abort(ctx.message("theme.themekit.query_themes.bad_password"))
79
79
  rescue StandardError
80
- ctx.abort(ctx.message('theme.themekit.query_themes.not_connect'))
80
+ ctx.abort(ctx.message("theme.themekit.query_themes.not_connect"))
81
81
  end
82
82
 
83
- resp[1]['themes'].map { |theme| [theme['name'], theme['id']] }.to_h
83
+ resp[1]["themes"].map { |theme| [theme["name"], theme["id"]] }.to_h
84
84
  end
85
85
 
86
86
  def serve(ctx, flags: nil, env:)
87
- command = build_command('open', env)
87
+ command = build_command("open", env)
88
88
  out, stat = ctx.capture2e(*command)
89
89
  ctx.puts(out)
90
- ctx.abort(ctx.message('theme.serve.open_fail')) unless stat.success?
90
+ ctx.abort(ctx.message("theme.serve.open_fail")) unless stat.success?
91
91
 
92
- command = build_command('watch', env)
92
+ command = build_command("watch", env)
93
93
  (command << flags).compact!
94
94
  command.flatten!
95
95
  ctx.system(*command)
96
96
  end
97
97
 
98
98
  def update(ctx)
99
- command = build_command('update')
99
+ command = build_command("update")
100
100
  ctx.system(*command)
101
101
  end
102
102
 
@@ -104,7 +104,7 @@ module Theme
104
104
 
105
105
  def build_command(action, env = nil)
106
106
  command = [THEMEKIT, action]
107
- command << '--no-update-notifier'
107
+ command << "--no-update-notifier"
108
108
  command << "--env=#{env}" if env
109
109
  command
110
110
  end
@@ -1,5 +1,5 @@
1
1
  Gem.post_uninstall do |uninstaller|
2
- if uninstaller.spec.name == 'shopify-cli'
2
+ if uninstaller.spec.name == "shopify-cli"
3
3
  if RUBY_PLATFORM.match(/mingw32/)
4
4
  bat_path = File.dirname(RbConfig.ruby)
5
5
  bat = "#{bat_path}\\shopify.bat"
@@ -7,9 +7,9 @@ Gem.post_uninstall do |uninstaller|
7
7
  # delete the auto-generated batch script
8
8
  File.unlink(bat)
9
9
  else
10
- require 'fileutils'
10
+ require "fileutils"
11
11
 
12
- symlink = '/usr/local/bin/shopify'
12
+ symlink = "/usr/local/bin/shopify"
13
13
 
14
14
  # delete the symbolic link IFF it exists AND it does not point to a file
15
15
  # (i.e., it's been left hanging as a result of the uninstall, as expected)
@@ -1,4 +1,4 @@
1
- require 'shopify_cli'
1
+ require "shopify_cli"
2
2
 
3
3
  module ShopifyCli
4
4
  ##
@@ -6,8 +6,8 @@ module ShopifyCli
6
6
  # these concerns are taken care of.
7
7
  #
8
8
  class AdminAPI < API
9
- autoload :PopulateResourceCommand, 'shopify-cli/admin_api/populate_resource_command'
10
- autoload :Schema, 'shopify-cli/admin_api/schema'
9
+ autoload :PopulateResourceCommand, "shopify-cli/admin_api/populate_resource_command"
10
+ autoload :Schema, "shopify-cli/admin_api/schema"
11
11
 
12
12
  class << self
13
13
  ##
@@ -96,19 +96,19 @@ module ShopifyCli
96
96
  env = Project.current.env
97
97
  ShopifyCli::OAuth.new(
98
98
  ctx: ctx,
99
- service: 'admin',
99
+ service: "admin",
100
100
  client_id: env.api_key,
101
101
  secret: env.secret,
102
102
  scopes: env.scopes,
103
103
  token_path: "/access_token",
104
- options: { 'grant_options[]' => 'per user' },
104
+ options: { "grant_options[]" => "per user" },
105
105
  ).authenticate("https://#{shop}/admin/oauth")
106
106
  end
107
107
 
108
- def api_client(ctx, api_version, shop, path: 'graphql.json')
108
+ def api_client(ctx, api_version, shop, path: "graphql.json")
109
109
  new(
110
110
  ctx: ctx,
111
- auth_header: 'X-Shopify-Access-Token',
111
+ auth_header: "X-Shopify-Access-Token",
112
112
  token: admin_access_token(ctx, shop),
113
113
  url: "https://#{shop}/admin/api/#{fetch_api_version(ctx, api_version, shop)}/#{path}",
114
114
  )
@@ -125,13 +125,13 @@ module ShopifyCli
125
125
  return api_version unless api_version.nil?
126
126
  client = new(
127
127
  ctx: ctx,
128
- auth_header: 'X-Shopify-Access-Token',
128
+ auth_header: "X-Shopify-Access-Token",
129
129
  token: admin_access_token(ctx, shop),
130
130
  url: "https://#{shop}/admin/api/unstable/graphql.json",
131
131
  )
132
- versions = client.query('api_versions')['data']['publicApiVersions']
133
- latest = versions.find { |version| version['displayName'].include?('Latest') }
134
- latest['handle']
132
+ versions = client.query("api_versions")["data"]["publicApiVersions"]
133
+ latest = versions.find { |version| version["displayName"].include?("Latest") }
134
+ latest["handle"]
135
135
  end
136
136
  end
137
137
  end
@@ -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,7 +19,7 @@ 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: {})
@@ -30,19 +30,19 @@ module ShopifyCli
30
30
  ctx.debug(resp)
31
31
  resp
32
32
  rescue API::APIRequestServerError, API::APIRequestUnexpectedError => e
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))
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))
35
35
  end
36
36
 
37
37
  def request(url:, body: nil, headers: {}, method: "POST")
38
38
  CLI::Kit::Util.begin do
39
39
  uri = URI.parse(url)
40
40
  unless uri.is_a?(URI::HTTP)
41
- ctx.abort(ctx.message('core.api.error.invalid_url', url))
41
+ ctx.abort(ctx.message("core.api.error.invalid_url", url))
42
42
  end
43
43
 
44
44
  # we delay this require so as to avoid a performance hit on starting the CLI
45
- require 'shopify-cli/http_request'
45
+ require "shopify-cli/http_request"
46
46
  headers = default_headers.merge(headers)
47
47
  response = if method == "POST"
48
48
  HttpRequest.post(uri, body, headers)
@@ -76,12 +76,12 @@ module ShopifyCli
76
76
  def load_query(name)
77
77
  project_type = ShopifyCli::Project.current_project_type
78
78
  project_file_path = File.join(
79
- ShopifyCli::ROOT, 'lib', 'project_types', project_type.to_s, 'graphql', "#{name}.graphql"
79
+ ShopifyCli::ROOT, "lib", "project_types", project_type.to_s, "graphql", "#{name}.graphql"
80
80
  )
81
81
  if !project_type.nil? && File.exist?(project_file_path)
82
82
  File.read(project_file_path)
83
83
  else
84
- File.read(File.join(ShopifyCli::ROOT, 'lib', 'graphql', "#{name}.graphql"))
84
+ File.read(File.join(ShopifyCli::ROOT, "lib", "graphql", "#{name}.graphql"))
85
85
  end
86
86
  end
87
87
 
@@ -93,9 +93,9 @@ module ShopifyCli
93
93
 
94
94
  def default_headers
95
95
  {
96
- 'User-Agent' => "Shopify App CLI #{ShopifyCli::VERSION} #{current_sha} | #{ctx.uname}",
96
+ "User-Agent" => "Shopify App CLI #{ShopifyCli::VERSION} #{current_sha} | #{ctx.uname}",
97
97
  }.tap do |headers|
98
- 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?
99
99
  end.merge(auth_headers(token))
100
100
  end
101
101