shopify-cli 1.6.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
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,4 +1,4 @@
1
- require 'net/http'
1
+ require "net/http"
2
2
 
3
3
  module ShopifyCli
4
4
  class HttpRequest
@@ -18,7 +18,7 @@ module ShopifyCli
18
18
  http.use_ssl = true
19
19
 
20
20
  req.body = body unless body.nil?
21
- req['Content-Type'] = 'application/json'
21
+ req["Content-Type"] = "application/json"
22
22
  headers.each { |header, value| req[header] = value }
23
23
  http.request(req)
24
24
  end
@@ -1,4 +1,4 @@
1
- require 'shopify_cli'
1
+ require "shopify_cli"
2
2
 
3
3
  module ShopifyCli
4
4
  ##
@@ -37,9 +37,9 @@ module ShopifyCli
37
37
  # ShopifyCli::JsDeps.new(context).install(true)
38
38
  #
39
39
  def install(verbose = false)
40
- title = ctx.message('core.js_deps.installing', @system.package_manager)
41
- success = ctx.message('core.js_deps.installed')
42
- failure = ctx.message('core.js_deps.error.install_error', @system.package_manager)
40
+ title = ctx.message("core.js_deps.installing", @system.package_manager)
41
+ success = ctx.message("core.js_deps.installed")
42
+ failure = ctx.message("core.js_deps.error.install_error", @system.package_manager)
43
43
 
44
44
  CLI::UI::Frame.open(title, success_text: success, failure_text: failure) do
45
45
  @system.call(
@@ -53,14 +53,14 @@ module ShopifyCli
53
53
 
54
54
  def yarn(verbose = false)
55
55
  cmd = %w(yarn install)
56
- cmd << '--silent' unless verbose
56
+ cmd << "--silent" unless verbose
57
57
 
58
58
  run_install_command(cmd)
59
59
  end
60
60
 
61
61
  def npm(verbose = false)
62
62
  cmd = %w(npm install --no-audit)
63
- cmd << '--quiet' unless verbose
63
+ cmd << "--quiet" unless verbose
64
64
 
65
65
  run_install_command(cmd)
66
66
  end
@@ -69,7 +69,7 @@ module ShopifyCli
69
69
  deps = parse_dependencies
70
70
  errors = nil
71
71
 
72
- spinner_title = ctx.message('core.js_deps.installing', @system.package_manager)
72
+ spinner_title = ctx.message("core.js_deps.installing", @system.package_manager)
73
73
  success = CLI::UI::Spinner.spin(spinner_title, auto_debrief: false) do |spinner|
74
74
  _, errors, status = CLI::Kit::System.capture3(*cmd, env: @ctx.env, chdir: ctx.root)
75
75
  update_spinner_title_and_status(spinner, status, deps)
@@ -81,19 +81,19 @@ module ShopifyCli
81
81
 
82
82
  def update_spinner_title_and_status(spinner, status, deps)
83
83
  if status.success?
84
- spinner.update_title(ctx.message('core.js_deps.installed', deps.size))
84
+ spinner.update_title(ctx.message("core.js_deps.installed", deps.size))
85
85
  else
86
- spinner.update_title(ctx.message('core.js_deps.error.install_spinner_error', deps.size))
86
+ spinner.update_title(ctx.message("core.js_deps.error.install_spinner_error", deps.size))
87
87
  CLI::UI::Spinner::TASK_FAILED
88
88
  end
89
89
  end
90
90
 
91
91
  def parse_dependencies
92
- package_json = File.join(ctx.root, 'package.json')
92
+ package_json = File.join(ctx.root, "package.json")
93
93
  pkg = begin
94
94
  JSON.parse(File.read(package_json))
95
95
  rescue Errno::ENOENT, Errno::ENOTDIR
96
- ctx.abort(ctx.message('core.js_deps.error.missing_package', package_json))
96
+ ctx.abort(ctx.message("core.js_deps.error.missing_package", package_json))
97
97
  end
98
98
 
99
99
  %w(dependencies devDependencies).map do |key|
@@ -101,7 +101,7 @@ module ShopifyCli
101
101
  end.flatten
102
102
  rescue JSON::ParserError
103
103
  ctx.puts(
104
- ctx.message('core.js_deps.error.invalid_package', File.read(File.join(path, 'package.json'))),
104
+ ctx.message("core.js_deps.error.invalid_package", File.read(File.join(path, "package.json"))),
105
105
  error: true
106
106
  )
107
107
  raise ShopifyCli::AbortSilent
@@ -1,4 +1,4 @@
1
- require 'shopify_cli'
1
+ require "shopify_cli"
2
2
 
3
3
  module ShopifyCli
4
4
  ##
@@ -7,8 +7,8 @@ module ShopifyCli
7
7
  class JsSystem
8
8
  include SmartProperties
9
9
 
10
- YARN_CORE_COMMAND = 'yarn'
11
- NPM_CORE_COMMAND = 'npm'
10
+ YARN_CORE_COMMAND = "yarn"
11
+ NPM_CORE_COMMAND = "npm"
12
12
 
13
13
  class << self
14
14
  ##
@@ -64,8 +64,8 @@ module ShopifyCli
64
64
  #
65
65
  def yarn?
66
66
  @has_yarn ||= begin
67
- cmd_path = @ctx.which('yarn')
68
- File.exist?(File.join(ctx.root, 'yarn.lock')) && !cmd_path.nil?
67
+ cmd_path = @ctx.which("yarn")
68
+ File.exist?(File.join(ctx.root, "yarn.lock")) && !cmd_path.nil?
69
69
  end
70
70
  end
71
71
 
@@ -0,0 +1,55 @@
1
+ require "delegate"
2
+
3
+ module ShopifyCli
4
+ ##
5
+ # `LazyDelegator` defers initialization of its underlying delegatee until the
6
+ # latter is accessed for the first time due to a method call that the
7
+ # delegator cannot handle itself:
8
+ #
9
+ # result = LazyDelegator.new do
10
+ # # carry out costly operation ...
11
+ # end
12
+ #
13
+ # result # referencing the object itself does not result in Proc evaluation
14
+ # result.to_h # however, calling a method on it will result in Proc evaluation
15
+ #
16
+ # LazyDelegator lends itself to being subclassed in scenarios where some
17
+ # facts are known and others are costly to compute:
18
+ #
19
+ # class LazySpecificationHandler < ShopifyCli::LazyDelegator
20
+ # attr_reader :identifier
21
+ #
22
+ # def initialize(identifier, &initializer)
23
+ # super(&initializer)
24
+ # @identifier = identifier
25
+ # end
26
+ # end
27
+ #
28
+ # handler = LazySpecificationHandler.new(:product_subscription) do
29
+ # # fetch specification from the Partners Dashboard API ...
30
+ # end
31
+ #
32
+ # # Accessing identifier will not result in Proc evaluation as it is
33
+ # # available as an attribute of the delegator itself
34
+ # handler.identifier # => :product_subscription
35
+ #
36
+ # # Accessing the specification will result in evaluation of the Proc
37
+ # # and in our example in a subsequent network call
38
+ # handler.specification # => <Extension::Models::Specifcation:...>
39
+ #
40
+ class LazyDelegator < SimpleDelegator
41
+ def initialize(&delegatee_initializer)
42
+ super([false, delegatee_initializer])
43
+ end
44
+
45
+ protected
46
+
47
+ def __getobj__(*)
48
+ initialized, value_or_initializer = super
49
+ return value_or_initializer if initialized
50
+ value_or_initializer.call.tap do |value|
51
+ __setobj__([true, value])
52
+ end
53
+ end
54
+ end
55
+ end
@@ -76,16 +76,6 @@ module ShopifyCli
76
76
  is_enabled: "{{v}} analytics are currently enabled",
77
77
  is_disabled: "{{v}} analytics are currently disabled",
78
78
  },
79
- shopifolk_beta: {
80
- help: <<~HELP,
81
- Opt in/out of shopifolk beta
82
- Usage: {{command:%s config [ analytics ] }}
83
- HELP
84
- enabled: "{{v}} shopifolk-beta has been enabled",
85
- disabled: "{{v}} shopifolk-beta has been disabled",
86
- is_enabled: "{{v}} shopifolk-beta is currently enabled",
87
- is_disabled: "{{v}} shopifolk-beta is currently disabled",
88
- },
89
79
  },
90
80
 
91
81
  git: {
@@ -129,7 +119,7 @@ module ShopifyCli
129
119
  missing_package: "expected to have a file at: %s",
130
120
  invalid_package: "{{info:%s}} was not valid JSON. Fix this then try again",
131
121
  install_spinner_error: "Unable to install all %d dependencies",
132
- install_error: 'An error occurred while installing dependencies',
122
+ install_error: "An error occurred while installing dependencies",
133
123
  },
134
124
 
135
125
  installing: "Installing dependencies with %s...",
@@ -192,9 +182,9 @@ module ShopifyCli
192
182
 
193
183
  api: {
194
184
  error: {
195
- internal_server_error: '{{red:{{x}} An unexpected error occurred on Shopify.}}',
185
+ internal_server_error: "{{red:{{x}} An unexpected error occurred on Shopify.}}",
196
186
  internal_server_error_debug: "\n{{red:Response details:}}\n%s\n\n",
197
- invalid_url: 'Invalid URL: %s',
187
+ invalid_url: "Invalid URL: %s",
198
188
  },
199
189
  },
200
190
 
@@ -282,7 +272,7 @@ module ShopifyCli
282
272
  MESSAGE
283
273
  development_store_select: "Which development store would you like to use?",
284
274
  app_select: "To which app does this project belong?",
285
- no_apps: 'You have no apps to connect to, creating a new app.',
275
+ no_apps: "You have no apps to connect to, creating a new app.",
286
276
  app_name: "App name",
287
277
  app_type: {
288
278
  select: "What type of app are you building?",
@@ -1,18 +1,18 @@
1
- require 'base64'
2
- require 'digest'
3
- require 'json'
4
- require 'net/http'
5
- require 'securerandom'
6
- require 'openssl'
7
- require 'shopify_cli'
8
- require 'uri'
9
- require 'webrick'
1
+ require "base64"
2
+ require "digest"
3
+ require "json"
4
+ require "net/http"
5
+ require "securerandom"
6
+ require "openssl"
7
+ require "shopify_cli"
8
+ require "uri"
9
+ require "webrick"
10
10
 
11
11
  module ShopifyCli
12
12
  class OAuth
13
13
  include SmartProperties
14
14
 
15
- autoload :Servlet, 'shopify-cli/oauth/servlet'
15
+ autoload :Servlet, "shopify-cli/oauth/servlet"
16
16
 
17
17
  class Error < StandardError; end
18
18
  LocalRequest = Struct.new(:method, :path, :query, :protocol)
@@ -54,10 +54,10 @@ module ShopifyCli
54
54
  @server ||= begin
55
55
  server = WEBrick::HTTPServer.new(
56
56
  Port: DEFAULT_PORT,
57
- Logger: WEBrick::Log.new(File.open(File::NULL, 'w')),
57
+ Logger: WEBrick::Log.new(File.open(File::NULL, "w")),
58
58
  AccessLog: [],
59
59
  )
60
- server.mount('/', Servlet, self, state_token)
60
+ server.mount("/", Servlet, self, state_token)
61
61
  server
62
62
  end
63
63
  end
@@ -80,17 +80,17 @@ module ShopifyCli
80
80
  end
81
81
 
82
82
  def output_authentication_info(uri)
83
- login_location = ctx.message(service == 'admin' ? 'core.oauth.location.admin' : 'core.oauth.location.partner')
84
- ctx.puts(ctx.message('core.oauth.authentication_required', login_location))
83
+ login_location = ctx.message(service == "admin" ? "core.oauth.location.admin" : "core.oauth.location.partner")
84
+ ctx.puts(ctx.message("core.oauth.authentication_required", login_location))
85
85
  ctx.open_url!(uri)
86
86
  end
87
87
 
88
88
  def receive_access_code
89
89
  @access_code ||= begin
90
90
  @server_thread.join(240)
91
- raise Error, ctx.message('core.oauth.error.timeout') if response_query.nil?
92
- raise Error, response_query['error_description'] unless response_query['error'].nil?
93
- response_query['code']
91
+ raise Error, ctx.message("core.oauth.error.timeout") if response_query.nil?
92
+ raise Error, response_query["error_description"] unless response_query["error"].nil?
93
+ response_query["code"]
94
94
  end
95
95
  end
96
96
 
@@ -105,8 +105,8 @@ module ShopifyCli
105
105
  }.merge(confirmation_param)
106
106
  )
107
107
  store.set(
108
- "#{service}_access_token".to_sym => resp['access_token'],
109
- "#{service}_refresh_token".to_sym => resp['refresh_token'],
108
+ "#{service}_access_token".to_sym => resp["access_token"],
109
+ "#{service}_refresh_token".to_sym => resp["refresh_token"],
110
110
  )
111
111
  end
112
112
 
@@ -130,8 +130,8 @@ module ShopifyCli
130
130
  client_id: client_id,
131
131
  )
132
132
  store.set(
133
- "#{service}_access_token".to_sym => resp['access_token'],
134
- "#{service}_refresh_token".to_sym => resp['refresh_token'],
133
+ "#{service}_access_token".to_sym => resp["access_token"],
134
+ "#{service}_refresh_token".to_sym => resp["refresh_token"],
135
135
  )
136
136
  end
137
137
 
@@ -155,7 +155,7 @@ module ShopifyCli
155
155
  scope: scopes,
156
156
  subject_token: store.get("#{service}_access_token".to_sym),
157
157
  )
158
- store.set("#{service}_exchange_token".to_sym => resp['access_token'])
158
+ store.set("#{service}_exchange_token".to_sym => resp["access_token"])
159
159
  end
160
160
 
161
161
  def post_token_request(url, params)
@@ -163,17 +163,17 @@ module ShopifyCli
163
163
  https = Net::HTTP.new(uri.host, uri.port)
164
164
  https.use_ssl = true
165
165
  request = Net::HTTP::Post.new(uri.path)
166
- request['User-Agent'] = "Shopify App CLI #{::ShopifyCli::VERSION}"
166
+ request["User-Agent"] = "Shopify App CLI #{::ShopifyCli::VERSION}"
167
167
  request.body = URI.encode_www_form(params)
168
168
  res = https.request(request)
169
- raise Error, JSON.parse(res.body)['error_description'] unless res.is_a?(Net::HTTPSuccess)
169
+ raise Error, JSON.parse(res.body)["error_description"] unless res.is_a?(Net::HTTPSuccess)
170
170
  JSON.parse(res.body)
171
171
  end
172
172
 
173
173
  def challange_params
174
174
  {
175
175
  code_challenge: code_challenge,
176
- code_challenge_method: 'S256',
176
+ code_challenge_method: "S256",
177
177
  }
178
178
  end
179
179
 
@@ -26,18 +26,18 @@ module ShopifyCli
26
26
  end
27
27
 
28
28
  def do_GET(req, res) # rubocop:disable Naming/MethodName
29
- if !req.query['error'].nil?
29
+ if !req.query["error"].nil?
30
30
  respond_with(
31
31
  res,
32
32
  400,
33
- Context.message('core.oauth.servlet.invalid_request_response', req.query['error_description'])
33
+ Context.message("core.oauth.servlet.invalid_request_response", req.query["error_description"])
34
34
  )
35
- elsif req.query['state'] != @state_token
36
- response_message = Context.message('core.oauth.servlet.invalid_state_response')
37
- req.query.merge!('error' => 'invalid_state', 'error_description' => response_message)
35
+ elsif req.query["state"] != @state_token
36
+ response_message = Context.message("core.oauth.servlet.invalid_state_response")
37
+ req.query.merge!("error" => "invalid_state", "error_description" => response_message)
38
38
  respond_with(res, 403, response_message)
39
39
  else
40
- respond_with(res, 200, Context.message('core.oauth.servlet.success_response'))
40
+ respond_with(res, 200, Context.message("core.oauth.servlet.success_response"))
41
41
  end
42
42
  @oauth.response_query = req.query
43
43
  @server.shutdown
@@ -48,10 +48,10 @@ module ShopifyCli
48
48
  locals = {
49
49
  status: status,
50
50
  message: message,
51
- color: successful ? 'black' : 'red',
51
+ color: successful ? "black" : "red",
52
52
  title:
53
- Context.message(successful ? 'core.oauth.servlet.authenticated' : 'core.oauth.servlet.not_authenticated'),
54
- autoclose: successful ? AUTOCLOSE_TEMPLATE : '',
53
+ Context.message(successful ? "core.oauth.servlet.authenticated" : "core.oauth.servlet.not_authenticated"),
54
+ autoclose: successful ? AUTOCLOSE_TEMPLATE : "",
55
55
  }
56
56
  response.status = status
57
57
  response.body = format(TEMPLATE, locals)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
- require 'shopify_cli'
3
- require 'optparse'
2
+ require "shopify_cli"
3
+ require "optparse"
4
4
 
5
5
  module ShopifyCli
6
6
  class Options
@@ -31,7 +31,7 @@ module ShopifyCli
31
31
  def parser
32
32
  @parser ||= begin
33
33
  opt = OptionParser.new
34
- opt.on('--help', '-h', Context.message('core.options.help_text')) do |v|
34
+ opt.on("--help", "-h", Context.message("core.options.help_text")) do |v|
35
35
  @help = v
36
36
  end
37
37
  end
@@ -1,17 +1,17 @@
1
1
  module ShopifyCli
2
2
  class Packager
3
- PACKAGING_DIR = File.join(ShopifyCli::ROOT, 'packaging')
4
- BUILDS_DIR = File.join(PACKAGING_DIR, 'builds', ShopifyCli::VERSION)
3
+ PACKAGING_DIR = File.join(ShopifyCli::ROOT, "packaging")
4
+ BUILDS_DIR = File.join(PACKAGING_DIR, "builds", ShopifyCli::VERSION)
5
5
 
6
6
  def initialize
7
7
  FileUtils.mkdir_p(BUILDS_DIR)
8
8
  end
9
9
 
10
10
  def build_debian
11
- ensure_program_installed('dpkg-deb', 'brew install dpkg')
11
+ ensure_program_installed("dpkg-deb", "brew install dpkg")
12
12
 
13
- root_dir = File.join(PACKAGING_DIR, 'debian')
14
- debian_dir = File.join(root_dir, 'shopify-cli', 'DEBIAN')
13
+ root_dir = File.join(PACKAGING_DIR, "debian")
14
+ debian_dir = File.join(root_dir, "shopify-cli", "DEBIAN")
15
15
  FileUtils.mkdir_p(debian_dir)
16
16
 
17
17
  puts "\nBuilding Debian package"
@@ -24,15 +24,15 @@ module ShopifyCli
24
24
  file_path = File.join(debian_dir, file)
25
25
 
26
26
  file_contents = File.read(File.join(root_dir, "#{file}.base"))
27
- file_contents = file_contents.gsub('SHOPIFY_CLI_VERSION', ShopifyCli::VERSION)
28
- File.open(file_path, 'w', 0775) { |f| f.write(file_contents) }
27
+ file_contents = file_contents.gsub("SHOPIFY_CLI_VERSION", ShopifyCli::VERSION)
28
+ File.open(file_path, "w", 0775) { |f| f.write(file_contents) }
29
29
  end
30
30
 
31
31
  puts "Building package..."
32
32
  Dir.chdir(root_dir)
33
- raise "Failed to build package" unless system('dpkg-deb', '-b', 'shopify-cli')
33
+ raise "Failed to build package" unless system("dpkg-deb", "-b", "shopify-cli")
34
34
 
35
- output_path = File.join(root_dir, 'shopify-cli.deb')
35
+ output_path = File.join(root_dir, "shopify-cli.deb")
36
36
  final_path = File.join(BUILDS_DIR, "shopify-cli-#{ShopifyCli::VERSION}.deb")
37
37
 
38
38
  puts "Moving generated package: \n From: #{output_path}\n To: #{final_path}\n\n"
@@ -40,34 +40,34 @@ module ShopifyCli
40
40
  end
41
41
 
42
42
  def build_rpm
43
- ensure_program_installed('rpmbuild', 'brew install rpm')
43
+ ensure_program_installed("rpmbuild", "brew install rpm")
44
44
 
45
- root_dir = File.join(PACKAGING_DIR, 'rpm')
46
- rpm_build_dir = File.join(root_dir, 'build')
45
+ root_dir = File.join(PACKAGING_DIR, "rpm")
46
+ rpm_build_dir = File.join(root_dir, "build")
47
47
  FileUtils.mkdir_p(rpm_build_dir)
48
48
 
49
- spec_path = File.join(root_dir, 'shopify-cli.spec')
49
+ spec_path = File.join(root_dir, "shopify-cli.spec")
50
50
  puts "\nBuilding RPM package"
51
51
 
52
52
  puts "Generating spec file..."
53
53
  File.delete(spec_path) if File.exist?(spec_path)
54
54
 
55
- spec_contents = File.read(File.join(root_dir, 'shopify-cli.spec.base'))
56
- spec_contents = spec_contents.gsub('SHOPIFY_CLI_VERSION', ShopifyCli::VERSION)
55
+ spec_contents = File.read(File.join(root_dir, "shopify-cli.spec.base"))
56
+ spec_contents = spec_contents.gsub("SHOPIFY_CLI_VERSION", ShopifyCli::VERSION)
57
57
  File.write(spec_path, spec_contents)
58
58
 
59
59
  puts "Building package..."
60
60
  Dir.chdir(root_dir)
61
- system('rpmbuild', '-bb', File.basename(spec_path))
61
+ system("rpmbuild", "-bb", File.basename(spec_path))
62
62
 
63
- output_dir = File.join(root_dir, 'build', 'noarch')
63
+ output_dir = File.join(root_dir, "build", "noarch")
64
64
 
65
65
  puts "Moving generated packages: \n From: #{output_dir}\n To: #{BUILDS_DIR}\n\n"
66
66
  FileUtils.mv(Dir.glob("#{output_dir}/*.rpm"), BUILDS_DIR)
67
67
  end
68
68
 
69
69
  def build_homebrew
70
- root_dir = File.join(PACKAGING_DIR, 'homebrew')
70
+ root_dir = File.join(PACKAGING_DIR, "homebrew")
71
71
 
72
72
  build_path = File.join(BUILDS_DIR, "shopify-cli.rb")
73
73
  puts "\nBuilding Homebrew package"
@@ -75,18 +75,18 @@ module ShopifyCli
75
75
  puts "Generating formula..."
76
76
  File.delete(build_path) if File.exist?(build_path)
77
77
 
78
- spec_contents = File.read(File.join(root_dir, 'shopify-cli.base.rb'))
79
- spec_contents = spec_contents.gsub('SHOPIFY_CLI_VERSION', ShopifyCli::VERSION)
78
+ spec_contents = File.read(File.join(root_dir, "shopify-cli.base.rb"))
79
+ spec_contents = spec_contents.gsub("SHOPIFY_CLI_VERSION", ShopifyCli::VERSION)
80
80
 
81
81
  puts "Grabbing sha256 checksum from Rubygems.org"
82
- require 'digest/sha2'
83
- require 'open-uri'
82
+ require "digest/sha2"
83
+ require "open-uri"
84
84
  gem_checksum = open("https://rubygems.org/downloads/shopify-cli-#{ShopifyCli::VERSION}.gem") do |io|
85
85
  Digest::SHA256.new.hexdigest(io.read)
86
86
  end
87
87
 
88
88
  puts "Got sha256 checksum for gem: #{gem_checksum}"
89
- spec_contents = spec_contents.gsub('SHOPIFY_CLI_GEM_CHECKSUM', gem_checksum)
89
+ spec_contents = spec_contents.gsub("SHOPIFY_CLI_GEM_CHECKSUM", gem_checksum)
90
90
 
91
91
  puts "Writing generated formula\n To: #{build_path}\n\n"
92
92
  File.write(build_path, spec_contents)
@@ -95,7 +95,7 @@ module ShopifyCli
95
95
  private
96
96
 
97
97
  def ensure_program_installed(program, installation_cmd)
98
- unless system(program, '--version', out: File::NULL, err: File::NULL)
98
+ unless system(program, "--version", out: File::NULL, err: File::NULL)
99
99
  raise <<~MESSAGE
100
100
 
101
101
  Could not find program #{program} which is required to build the package.