shopify-cli 2.4.0 → 2.5.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 (223) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/shopify.yml +0 -2
  3. data/.rubocop.yml +14 -14
  4. data/.rubocop_todo.yml +3 -3
  5. data/CHANGELOG.md +5 -0
  6. data/Dockerfile +1 -1
  7. data/Gemfile.lock +1 -1
  8. data/RELEASING.md +1 -1
  9. data/Rakefile +18 -18
  10. data/bin/shopify +3 -3
  11. data/lib/project_types/extension/cli.rb +3 -3
  12. data/lib/project_types/extension/commands/build.rb +2 -2
  13. data/lib/project_types/extension/commands/check.rb +2 -2
  14. data/lib/project_types/extension/commands/connect.rb +1 -1
  15. data/lib/project_types/extension/commands/create.rb +41 -23
  16. data/lib/project_types/extension/commands/extension_command.rb +1 -1
  17. data/lib/project_types/extension/commands/info.rb +1 -1
  18. data/lib/project_types/extension/commands/push.rb +1 -1
  19. data/lib/project_types/extension/commands/register.rb +2 -2
  20. data/lib/project_types/extension/commands/serve.rb +5 -5
  21. data/lib/project_types/extension/commands/tunnel.rb +6 -6
  22. data/lib/project_types/extension/extension_project.rb +4 -4
  23. data/lib/project_types/extension/features/argo.rb +2 -2
  24. data/lib/project_types/extension/features/argo_config.rb +5 -5
  25. data/lib/project_types/extension/features/argo_serve.rb +20 -6
  26. data/lib/project_types/extension/features/argo_setup.rb +1 -1
  27. data/lib/project_types/extension/features/argo_setup_step.rb +1 -1
  28. data/lib/project_types/extension/features/argo_setup_steps.rb +2 -2
  29. data/lib/project_types/extension/forms/connect.rb +2 -2
  30. data/lib/project_types/extension/forms/create.rb +2 -2
  31. data/lib/project_types/extension/forms/questions/ask_app.rb +2 -2
  32. data/lib/project_types/extension/forms/questions/ask_name.rb +1 -1
  33. data/lib/project_types/extension/forms/questions/ask_registration.rb +2 -2
  34. data/lib/project_types/extension/forms/questions/ask_template.rb +2 -2
  35. data/lib/project_types/extension/forms/questions/ask_type.rb +2 -2
  36. data/lib/project_types/extension/messages/message_loading.rb +2 -2
  37. data/lib/project_types/extension/models/development_server.rb +45 -6
  38. data/lib/project_types/extension/models/development_server_requirements.rb +22 -3
  39. data/lib/project_types/extension/models/lazy_specification_handler.rb +1 -1
  40. data/lib/project_types/extension/models/specification.rb +1 -1
  41. data/lib/project_types/extension/models/specification_handlers/default.rb +10 -2
  42. data/lib/project_types/extension/models/specification_handlers/theme_app_extension.rb +1 -1
  43. data/lib/project_types/extension/models/specifications.rb +4 -4
  44. data/lib/project_types/extension/tasks/choose_next_available_port.rb +1 -1
  45. data/lib/project_types/extension/tasks/configure_features.rb +1 -1
  46. data/lib/project_types/extension/tasks/configure_options.rb +1 -1
  47. data/lib/project_types/extension/tasks/converters/product_converter.rb +1 -1
  48. data/lib/project_types/extension/tasks/create_extension.rb +2 -2
  49. data/lib/project_types/extension/tasks/fetch_specifications.rb +2 -2
  50. data/lib/project_types/extension/tasks/find_npm_packages.rb +3 -3
  51. data/lib/project_types/extension/tasks/get_app.rb +2 -2
  52. data/lib/project_types/extension/tasks/get_apps.rb +2 -2
  53. data/lib/project_types/extension/tasks/get_extensions.rb +2 -2
  54. data/lib/project_types/extension/tasks/get_product.rb +2 -2
  55. data/lib/project_types/extension/tasks/run_extension_command.rb +10 -3
  56. data/lib/project_types/extension/tasks/update_draft.rb +2 -2
  57. data/lib/project_types/node/cli.rb +3 -3
  58. data/lib/project_types/node/commands/connect.rb +4 -4
  59. data/lib/project_types/node/commands/create.rb +10 -10
  60. data/lib/project_types/node/commands/deploy/heroku.rb +4 -4
  61. data/lib/project_types/node/commands/deploy.rb +3 -3
  62. data/lib/project_types/node/commands/generate.rb +2 -2
  63. data/lib/project_types/node/commands/open.rb +3 -3
  64. data/lib/project_types/node/commands/serve.rb +7 -7
  65. data/lib/project_types/node/commands/tunnel.rb +6 -6
  66. data/lib/project_types/node/forms/create.rb +3 -3
  67. data/lib/project_types/php/cli.rb +27 -0
  68. data/lib/project_types/php/commands/connect.rb +19 -0
  69. data/lib/project_types/php/commands/create.rb +143 -0
  70. data/lib/project_types/php/commands/deploy/heroku.rb +129 -0
  71. data/lib/project_types/php/commands/deploy.rb +32 -0
  72. data/lib/project_types/php/commands/open.rb +16 -0
  73. data/lib/project_types/php/commands/serve.rb +51 -0
  74. data/lib/project_types/php/commands/tunnel.rb +37 -0
  75. data/lib/project_types/php/forms/create.rb +45 -0
  76. data/lib/project_types/php/messages/messages.rb +191 -0
  77. data/lib/project_types/rails/cli.rb +3 -3
  78. data/lib/project_types/rails/commands/connect.rb +4 -4
  79. data/lib/project_types/rails/commands/create.rb +12 -12
  80. data/lib/project_types/rails/commands/deploy/heroku.rb +4 -4
  81. data/lib/project_types/rails/commands/deploy.rb +3 -3
  82. data/lib/project_types/rails/commands/generate/webhook.rb +3 -3
  83. data/lib/project_types/rails/commands/generate.rb +3 -3
  84. data/lib/project_types/rails/commands/open.rb +3 -3
  85. data/lib/project_types/rails/commands/serve.rb +8 -8
  86. data/lib/project_types/rails/commands/tunnel.rb +6 -6
  87. data/lib/project_types/rails/forms/create.rb +3 -3
  88. data/lib/project_types/rails/gem.rb +1 -1
  89. data/lib/project_types/rails/ruby.rb +1 -1
  90. data/lib/project_types/script/cli.rb +11 -4
  91. data/lib/project_types/script/commands/create.rb +2 -2
  92. data/lib/project_types/script/commands/push.rb +2 -2
  93. data/lib/project_types/script/forms/create.rb +1 -1
  94. data/lib/project_types/script/layers/application/extension_points.rb +2 -2
  95. data/lib/project_types/script/layers/application/push_script.rb +4 -1
  96. data/lib/project_types/script/layers/domain/script_project.rb +2 -2
  97. data/lib/project_types/script/layers/infrastructure/api_clients/partners_proxy_api_client.rb +55 -0
  98. data/lib/project_types/script/layers/infrastructure/api_clients/script_service_api_client.rb +35 -0
  99. data/lib/project_types/script/layers/infrastructure/command_runner.rb +1 -1
  100. data/lib/project_types/script/layers/infrastructure/languages/assemblyscript_project_creator.rb +1 -1
  101. data/lib/project_types/script/layers/infrastructure/languages/rust_project_creator.rb +1 -1
  102. data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +1 -1
  103. data/lib/project_types/script/layers/infrastructure/script_project_repository.rb +5 -5
  104. data/lib/project_types/script/layers/infrastructure/script_service.rb +4 -8
  105. data/lib/project_types/script/layers/infrastructure/service_locator.rb +20 -0
  106. data/lib/project_types/script/tasks/ensure_env.rb +6 -6
  107. data/lib/project_types/script/ui/error_handler.rb +75 -75
  108. data/lib/project_types/script/ui/printing_spinner.rb +1 -1
  109. data/lib/project_types/theme/cli.rb +3 -3
  110. data/lib/project_types/theme/commands/check.rb +3 -3
  111. data/lib/project_types/theme/commands/delete.rb +7 -7
  112. data/lib/project_types/theme/commands/init.rb +3 -3
  113. data/lib/project_types/theme/commands/language_server.rb +2 -2
  114. data/lib/project_types/theme/commands/package.rb +2 -2
  115. data/lib/project_types/theme/commands/publish.rb +5 -5
  116. data/lib/project_types/theme/commands/pull.rb +9 -9
  117. data/lib/project_types/theme/commands/push.rb +12 -12
  118. data/lib/project_types/theme/commands/serve.rb +4 -4
  119. data/lib/project_types/theme/forms/confirm_store.rb +1 -1
  120. data/lib/project_types/theme/forms/select.rb +2 -2
  121. data/lib/{shopify-cli → shopify_cli}/admin_api/populate_resource_command.rb +3 -3
  122. data/lib/{shopify-cli → shopify_cli}/admin_api/schema.rb +4 -4
  123. data/lib/{shopify-cli → shopify_cli}/admin_api.rb +27 -27
  124. data/lib/{shopify-cli → shopify_cli}/api.rb +8 -8
  125. data/lib/{shopify-cli → shopify_cli}/command.rb +3 -3
  126. data/lib/{shopify-cli → shopify_cli}/commands/config.rb +14 -14
  127. data/lib/{shopify-cli → shopify_cli}/commands/help.rb +4 -4
  128. data/lib/{shopify-cli → shopify_cli}/commands/login.rb +7 -7
  129. data/lib/shopify_cli/commands/logout.rb +39 -0
  130. data/lib/{shopify-cli → shopify_cli}/commands/populate/customer.rb +4 -4
  131. data/lib/{shopify-cli → shopify_cli}/commands/populate/draft_order.rb +4 -4
  132. data/lib/{shopify-cli → shopify_cli}/commands/populate/product.rb +4 -4
  133. data/lib/shopify_cli/commands/populate.rb +23 -0
  134. data/lib/shopify_cli/commands/store.rb +15 -0
  135. data/lib/{shopify-cli → shopify_cli}/commands/switch.rb +5 -5
  136. data/lib/{shopify-cli → shopify_cli}/commands/system.rb +10 -10
  137. data/lib/shopify_cli/commands/version.rb +15 -0
  138. data/lib/{shopify-cli → shopify_cli}/commands/whoami.rb +7 -7
  139. data/lib/shopify_cli/commands.rb +34 -0
  140. data/lib/{shopify-cli → shopify_cli}/connect.rb +3 -3
  141. data/lib/{shopify-cli → shopify_cli}/constants.rb +1 -1
  142. data/lib/{shopify-cli → shopify_cli}/context.rb +6 -6
  143. data/lib/{shopify-cli → shopify_cli}/core/entry_point.rb +7 -7
  144. data/lib/{shopify-cli → shopify_cli}/core/executor.rb +3 -3
  145. data/lib/{shopify-cli → shopify_cli}/core/finalize.rb +1 -1
  146. data/lib/{shopify-cli → shopify_cli}/core/help_resolver.rb +2 -2
  147. data/lib/{shopify-cli → shopify_cli}/core/monorail.rb +8 -8
  148. data/lib/shopify_cli/core.rb +8 -0
  149. data/lib/{shopify-cli → shopify_cli}/db.rb +8 -8
  150. data/lib/{shopify-cli → shopify_cli}/environment.rb +1 -1
  151. data/lib/{shopify-cli → shopify_cli}/feature.rb +8 -8
  152. data/lib/{shopify-cli → shopify_cli}/form.rb +2 -2
  153. data/lib/{shopify-cli → shopify_cli}/git.rb +6 -6
  154. data/lib/{shopify-cli → shopify_cli}/helpers/haikunator.rb +1 -1
  155. data/lib/shopify_cli/helpers.rb +5 -0
  156. data/lib/{shopify-cli → shopify_cli}/heroku.rb +38 -13
  157. data/lib/{shopify-cli → shopify_cli}/http_request.rb +1 -1
  158. data/lib/{shopify-cli → shopify_cli}/identity_auth/servlet.rb +1 -1
  159. data/lib/{shopify-cli → shopify_cli}/identity_auth.rb +8 -8
  160. data/lib/{shopify-cli → shopify_cli}/js_deps.rb +7 -7
  161. data/lib/{shopify-cli → shopify_cli}/js_system.rb +10 -10
  162. data/lib/{shopify-cli → shopify_cli}/lazy_delegator.rb +2 -2
  163. data/lib/{shopify-cli → shopify_cli}/messages/messages.rb +17 -1
  164. data/lib/{shopify-cli → shopify_cli}/method_object.rb +4 -4
  165. data/lib/{shopify-cli → shopify_cli}/options.rb +1 -1
  166. data/lib/{shopify-cli → shopify_cli}/packager.rb +8 -8
  167. data/lib/{shopify-cli → shopify_cli}/partners_api/organizations.rb +1 -1
  168. data/lib/{shopify-cli → shopify_cli}/partners_api.rb +13 -13
  169. data/lib/shopify_cli/php_deps.rb +102 -0
  170. data/lib/{shopify-cli → shopify_cli}/process_supervision.rb +10 -8
  171. data/lib/{shopify-cli → shopify_cli}/project.rb +15 -15
  172. data/lib/{shopify-cli → shopify_cli}/project_commands.rb +3 -3
  173. data/lib/{shopify-cli → shopify_cli}/project_type.rb +5 -5
  174. data/lib/{shopify-cli → shopify_cli}/resolve_constant.rb +5 -5
  175. data/lib/{shopify-cli → shopify_cli}/resources/env_file.rb +1 -1
  176. data/lib/shopify_cli/resources.rb +5 -0
  177. data/lib/{shopify-cli → shopify_cli}/result.rb +11 -11
  178. data/lib/{shopify-cli → shopify_cli}/shopifolk.rb +6 -6
  179. data/lib/{shopify-cli → shopify_cli}/sub_command.rb +1 -1
  180. data/lib/{shopify-cli → shopify_cli}/task.rb +1 -1
  181. data/lib/{shopify-cli → shopify_cli}/tasks/confirm_store.rb +3 -3
  182. data/lib/{shopify-cli → shopify_cli}/tasks/create_api_client.rb +4 -4
  183. data/lib/shopify_cli/tasks/ensure_authenticated.rb +13 -0
  184. data/lib/{shopify-cli → shopify_cli}/tasks/ensure_dev_store.rb +5 -5
  185. data/lib/{shopify-cli → shopify_cli}/tasks/ensure_env.rb +3 -3
  186. data/lib/{shopify-cli → shopify_cli}/tasks/ensure_loopback_url.rb +4 -4
  187. data/lib/{shopify-cli → shopify_cli}/tasks/ensure_project_type.rb +3 -3
  188. data/lib/{shopify-cli → shopify_cli}/tasks/select_org_and_shop.rb +8 -8
  189. data/lib/{shopify-cli → shopify_cli}/tasks/update_dashboard_urls.rb +6 -6
  190. data/lib/{shopify-cli → shopify_cli}/tasks.rb +10 -10
  191. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/certificate_manager.rb +5 -5
  192. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/header_hash.rb +1 -1
  193. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/hot-reload.js +0 -0
  194. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/hot_reload.rb +1 -1
  195. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/local_assets.rb +1 -1
  196. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/proxy.rb +2 -2
  197. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/sse.rb +1 -1
  198. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/watcher.rb +1 -1
  199. data/lib/{shopify-cli → shopify_cli}/theme/dev_server/web_server.rb +1 -1
  200. data/lib/{shopify-cli → shopify_cli}/theme/dev_server.rb +3 -3
  201. data/lib/{shopify-cli → shopify_cli}/theme/development_theme.rb +9 -9
  202. data/lib/{shopify-cli → shopify_cli}/theme/file.rb +1 -1
  203. data/lib/{shopify-cli → shopify_cli}/theme/ignore_filter.rb +1 -1
  204. data/lib/{shopify-cli → shopify_cli}/theme/mime_type.rb +1 -1
  205. data/lib/{shopify-cli → shopify_cli}/theme/syncer.rb +6 -6
  206. data/lib/{shopify-cli → shopify_cli}/theme/theme.rb +4 -4
  207. data/lib/{shopify-cli → shopify_cli}/transform_data_structure.rb +4 -4
  208. data/lib/{shopify-cli → shopify_cli}/tunnel.rb +14 -14
  209. data/lib/shopify_cli/version.rb +3 -0
  210. data/lib/shopify_cli.rb +50 -49
  211. data/shopify-cli.gemspec +2 -2
  212. metadata +104 -91
  213. data/lib/project_types/script/layers/infrastructure/api_clients.rb +0 -89
  214. data/lib/shopify-cli/commands/logout.rb +0 -39
  215. data/lib/shopify-cli/commands/populate.rb +0 -23
  216. data/lib/shopify-cli/commands/store.rb +0 -15
  217. data/lib/shopify-cli/commands/version.rb +0 -15
  218. data/lib/shopify-cli/commands.rb +0 -34
  219. data/lib/shopify-cli/core.rb +0 -8
  220. data/lib/shopify-cli/helpers.rb +0 -5
  221. data/lib/shopify-cli/resources.rb +0 -5
  222. data/lib/shopify-cli/tasks/ensure_authenticated.rb +0 -13
  223. data/lib/shopify-cli/version.rb +0 -3
@@ -3,7 +3,7 @@ require "net/http"
3
3
  require "stringio"
4
4
  require "time"
5
5
 
6
- module ShopifyCli
6
+ module ShopifyCLI
7
7
  module Theme
8
8
  module DevServer
9
9
  HOP_BY_HOP_HEADERS = [
@@ -79,7 +79,7 @@ module ShopifyCli
79
79
  end
80
80
 
81
81
  def bearer_token
82
- ShopifyCli::DB.get(:storefront_renderer_production_exchange_token) ||
82
+ ShopifyCLI::DB.get(:storefront_renderer_production_exchange_token) ||
83
83
  raise(KeyError, "storefront_renderer_production_exchange_token missing")
84
84
  end
85
85
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  require "thread"
3
3
 
4
- module ShopifyCli
4
+ module ShopifyCLI
5
5
  module Theme
6
6
  module DevServer
7
7
  # Server-Sent events implementation for Rack.
@@ -2,7 +2,7 @@
2
2
  require "listen"
3
3
  require "observer"
4
4
 
5
- module ShopifyCli
5
+ module ShopifyCLI
6
6
  module Theme
7
7
  module DevServer
8
8
  # Watches for file changes and publish events to the theme
@@ -3,7 +3,7 @@
3
3
  require "webrick"
4
4
  require "stringio"
5
5
 
6
- module ShopifyCli
6
+ module ShopifyCLI
7
7
  module Theme
8
8
  module DevServer
9
9
  # WEBrick will sometimes cause a fatal deadlock error on shutdown.
@@ -14,7 +14,7 @@ require_relative "dev_server/certificate_manager"
14
14
 
15
15
  require "pathname"
16
16
 
17
- module ShopifyCli
17
+ module ShopifyCLI
18
18
  module Theme
19
19
  module DevServer
20
20
  class << self
@@ -80,8 +80,8 @@ module ShopifyCli
80
80
  )
81
81
  watcher.stop
82
82
 
83
- rescue ShopifyCli::API::APIRequestForbiddenError,
84
- ShopifyCli::API::APIRequestUnauthorizedError
83
+ rescue ShopifyCLI::API::APIRequestForbiddenError,
84
+ ShopifyCLI::API::APIRequestUnauthorizedError
85
85
  @ctx.abort("You are not authorized to edit themes on #{theme.shop}.\n" \
86
86
  "Make sure you are a user of that store, and allowed to edit themes.")
87
87
  end
@@ -4,17 +4,17 @@ require_relative "theme"
4
4
  require "socket"
5
5
  require "securerandom"
6
6
 
7
- module ShopifyCli
7
+ module ShopifyCLI
8
8
  module Theme
9
9
  API_NAME_LIMIT = 50
10
10
 
11
11
  class DevelopmentTheme < Theme
12
12
  def id
13
- ShopifyCli::DB.get(:development_theme_id)
13
+ ShopifyCLI::DB.get(:development_theme_id)
14
14
  end
15
15
 
16
16
  def name
17
- existing_name = ShopifyCli::DB.get(:development_theme_name)
17
+ existing_name = ShopifyCLI::DB.get(:development_theme_name)
18
18
  # Up to version 2.3.0 (included) generated names stored locally
19
19
  # could have more than 50 characters and the API rejected them.
20
20
  # This code ensures we update the name for those users to ensure
@@ -36,27 +36,27 @@ module ShopifyCli
36
36
  else
37
37
  create
38
38
  @ctx.debug("Created temporary development theme: #{@id}")
39
- ShopifyCli::DB.set(development_theme_id: @id)
39
+ ShopifyCLI::DB.set(development_theme_id: @id)
40
40
  end
41
41
  end
42
42
 
43
43
  def exists?
44
44
  return false unless id
45
45
 
46
- ShopifyCli::AdminAPI.rest_request(
46
+ ShopifyCLI::AdminAPI.rest_request(
47
47
  @ctx,
48
48
  shop: shop,
49
49
  path: "themes/#{id}.json",
50
50
  api_version: "unstable",
51
51
  )
52
- rescue ShopifyCli::API::APIRequestNotFoundError
52
+ rescue ShopifyCLI::API::APIRequestNotFoundError
53
53
  false
54
54
  end
55
55
 
56
56
  def delete
57
57
  super if exists?
58
- ShopifyCli::DB.del(:development_theme_id) if ShopifyCli::DB.exists?(:development_theme_id)
59
- ShopifyCli::DB.del(:development_theme_name) if ShopifyCli::DB.exists?(:development_theme_name)
58
+ ShopifyCLI::DB.del(:development_theme_id) if ShopifyCLI::DB.exists?(:development_theme_id)
59
+ ShopifyCLI::DB.del(:development_theme_name) if ShopifyCLI::DB.exists?(:development_theme_name)
60
60
  end
61
61
 
62
62
  def self.delete(ctx)
@@ -74,7 +74,7 @@ module ShopifyCli
74
74
  identifier = "#{hash}-#{hostname[0, hostname_character_limit]}"
75
75
  theme_name = "Development (#{identifier})"
76
76
 
77
- ShopifyCli::DB.set(development_theme_name: theme_name)
77
+ ShopifyCLI::DB.set(development_theme_name: theme_name)
78
78
 
79
79
  theme_name
80
80
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  require_relative "mime_type"
3
3
 
4
- module ShopifyCli
4
+ module ShopifyCLI
5
5
  module Theme
6
6
  class File < Struct.new(:path)
7
7
  attr_reader :relative_path
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module ShopifyCli
3
+ module ShopifyCLI
4
4
  module Theme
5
5
  class IgnoreFilter
6
6
  FILE = ".shopifyignore"
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  require "webrick"
3
3
 
4
- module ShopifyCli
4
+ module ShopifyCLI
5
5
  module Theme
6
6
  class MimeType < Struct.new(:name)
7
7
  MIME_TYPES = WEBrick::HTTPUtils::DefaultMimeTypes.merge(
@@ -3,7 +3,7 @@ require "thread"
3
3
  require "json"
4
4
  require "base64"
5
5
 
6
- module ShopifyCli
6
+ module ShopifyCLI
7
7
  module Theme
8
8
  class Syncer
9
9
  class Operation < Struct.new(:method, :file)
@@ -80,7 +80,7 @@ module ShopifyCli
80
80
  end
81
81
 
82
82
  def fetch_checksums!
83
- _status, response = ShopifyCli::AdminAPI.rest_request(
83
+ _status, response = ShopifyCLI::AdminAPI.rest_request(
84
84
  @ctx,
85
85
  shop: @theme.shop,
86
86
  path: "themes/#{@theme.id}/assets.json",
@@ -211,7 +211,7 @@ module ShopifyCli
211
211
  used, total = limit.split("/").map(&:to_i)
212
212
  backoff_if_near_limit!(used, total)
213
213
  end
214
- rescue ShopifyCli::API::APIRequestError => e
214
+ rescue ShopifyCLI::API::APIRequestError => e
215
215
  report_error(
216
216
  "{{red:ERROR}} {{blue:#{operation}}}:\n " +
217
217
  parse_api_errors(e).join("\n ")
@@ -228,7 +228,7 @@ module ShopifyCli
228
228
  asset[:attachment] = Base64.encode64(file.read)
229
229
  end
230
230
 
231
- _status, body, response = ShopifyCli::AdminAPI.rest_request(
231
+ _status, body, response = ShopifyCLI::AdminAPI.rest_request(
232
232
  @ctx,
233
233
  shop: @theme.shop,
234
234
  path: "themes/#{@theme.id}/assets.json",
@@ -243,7 +243,7 @@ module ShopifyCli
243
243
  end
244
244
 
245
245
  def get(file)
246
- _status, body, response = ShopifyCli::AdminAPI.rest_request(
246
+ _status, body, response = ShopifyCLI::AdminAPI.rest_request(
247
247
  @ctx,
248
248
  shop: @theme.shop,
249
249
  path: "themes/#{@theme.id}/assets.json",
@@ -265,7 +265,7 @@ module ShopifyCli
265
265
  end
266
266
 
267
267
  def delete(file)
268
- _status, _body, response = ShopifyCli::AdminAPI.rest_request(
268
+ _status, _body, response = ShopifyCLI::AdminAPI.rest_request(
269
269
  @ctx,
270
270
  shop: @theme.shop,
271
271
  path: "themes/#{@theme.id}/assets.json",
@@ -4,7 +4,7 @@ require_relative "file"
4
4
  require "pathname"
5
5
  require "time"
6
6
 
7
- module ShopifyCli
7
+ module ShopifyCLI
8
8
  module Theme
9
9
  class InvalidThemeRole < StandardError; end
10
10
 
@@ -101,7 +101,7 @@ module ShopifyCli
101
101
  def create
102
102
  raise InvalidThemeRole, "Can't create live theme. Use publish." if live?
103
103
 
104
- _status, body = ShopifyCli::AdminAPI.rest_request(
104
+ _status, body = ShopifyCLI::AdminAPI.rest_request(
105
105
  @ctx,
106
106
  shop: shop,
107
107
  path: "themes.json",
@@ -144,11 +144,11 @@ module ShopifyCli
144
144
  end
145
145
 
146
146
  def current_development?
147
- development? && id == ShopifyCli::DB.get(:development_theme_id)
147
+ development? && id == ShopifyCLI::DB.get(:development_theme_id)
148
148
  end
149
149
 
150
150
  def foreign_development?
151
- development? && id != ShopifyCli::DB.get(:development_theme_id)
151
+ development? && id != ShopifyCLI::DB.get(:development_theme_id)
152
152
  end
153
153
 
154
154
  def to_h
@@ -1,5 +1,5 @@
1
1
 
2
- module ShopifyCli
2
+ module ShopifyCLI
3
3
  ##
4
4
  # `TransformDataStructure` helps to standardize data structure access. It
5
5
  # traverses nested data structures and can convert
@@ -22,13 +22,13 @@ module ShopifyCli
22
22
  # Since `TransformDataStructure` is a method object, it can easily be chained:
23
23
  #
24
24
  # require 'open-uri'
25
- # ShopifyCli::Result
25
+ # ShopifyCLI::Result
26
26
  # .call { open("https://jsonplaceholder.typicode.com/todos/1") }
27
27
  # .map(&TransformDataStructure.new(symbolize_keys: true, underscore_keys: true))
28
28
  # .value # => { id: 1, user_id: 1, ... }
29
29
  #
30
30
  class TransformDataStructure
31
- include ShopifyCli::MethodObject
31
+ include ShopifyCLI::MethodObject
32
32
 
33
33
  class << self
34
34
  private
@@ -53,7 +53,7 @@ module ShopifyCli
53
53
  result[transform_key(key)] = call(value).value
54
54
  end
55
55
  else
56
- ShopifyCli::Result.success(object)
56
+ ShopifyCLI::Result.success(object)
57
57
  end
58
58
  end
59
59
 
@@ -4,7 +4,7 @@ require "shopify_cli"
4
4
  require "forwardable"
5
5
  require "uri"
6
6
 
7
- module ShopifyCli
7
+ module ShopifyCLI
8
8
  ##
9
9
  # Wraps around ngrok functionality to allow you to spawn a ngrok proccess in the
10
10
  # background and stop the process when you need to. It also allows control over
@@ -39,8 +39,8 @@ module ShopifyCli
39
39
  # * `ctx` - running context from your command
40
40
  #
41
41
  def stop(ctx)
42
- if ShopifyCli::ProcessSupervision.running?(:ngrok)
43
- if ShopifyCli::ProcessSupervision.stop(:ngrok)
42
+ if ShopifyCLI::ProcessSupervision.running?(:ngrok)
43
+ if ShopifyCLI::ProcessSupervision.stop(:ngrok)
44
44
  ctx.puts(ctx.message("core.tunnel.stopped"))
45
45
  else
46
46
  ctx.abort(ctx.message("core.tunnel.error.stop"))
@@ -75,7 +75,7 @@ module ShopifyCli
75
75
  end
76
76
  ctx.puts(ctx.message("core.tunnel.start", url))
77
77
  ctx.puts(ctx.message("core.tunnel.will_timeout", seconds_to_hm(seconds_remaining)))
78
- ctx.puts(ctx.message("core.tunnel.signup_suggestion", ShopifyCli::TOOL_NAME))
78
+ ctx.puts(ctx.message("core.tunnel.signup_suggestion", ShopifyCLI::TOOL_NAME))
79
79
  end
80
80
  url
81
81
  end
@@ -91,7 +91,7 @@ module ShopifyCli
91
91
  #
92
92
  def auth(ctx, token)
93
93
  install(ctx)
94
- ctx.system(File.join(ShopifyCli.cache_dir, "ngrok"), "authtoken", token)
94
+ ctx.system(File.join(ShopifyCLI.cache_dir, "ngrok"), "authtoken", token)
95
95
  end
96
96
 
97
97
  ##
@@ -145,28 +145,28 @@ module ShopifyCli
145
145
 
146
146
  def install(ctx)
147
147
  ngrok = "ngrok#{ctx.executable_file_extension}"
148
- return if File.exist?(File.join(ShopifyCli.cache_dir, ngrok))
148
+ return if File.exist?(File.join(ShopifyCLI.cache_dir, ngrok))
149
149
  check_prereq_command(ctx, "curl")
150
150
  check_prereq_command(ctx, ctx.linux? ? "unzip" : "tar")
151
151
  spinner = CLI::UI::SpinGroup.new
152
152
  spinner.add(ctx.message("core.tunnel.installing")) do
153
- zip_dest = File.join(ShopifyCli.cache_dir, "ngrok.zip")
153
+ zip_dest = File.join(ShopifyCLI.cache_dir, "ngrok.zip")
154
154
  unless File.exist?(zip_dest)
155
- ctx.system("curl", "-o", zip_dest, DOWNLOAD_URLS[ctx.os], chdir: ShopifyCli.cache_dir)
155
+ ctx.system("curl", "-o", zip_dest, DOWNLOAD_URLS[ctx.os], chdir: ShopifyCLI.cache_dir)
156
156
  end
157
157
  args = if ctx.linux?
158
158
  %W(unzip -u #{zip_dest})
159
159
  else
160
160
  %W(tar -xf #{zip_dest})
161
161
  end
162
- ctx.system(*args, chdir: ShopifyCli.cache_dir)
162
+ ctx.system(*args, chdir: ShopifyCLI.cache_dir)
163
163
  ctx.rm(zip_dest)
164
164
  end
165
165
  spinner.wait
166
166
 
167
167
  # final check to see if ngrok is accessible
168
- unless File.exist?(File.join(ShopifyCli.cache_dir, ngrok))
169
- ctx.abort(ctx.message("core.tunnel.error.ngrok", ngrok, ShopifyCli.cache_dir))
168
+ unless File.exist?(File.join(ShopifyCLI.cache_dir, ngrok))
169
+ ctx.abort(ctx.message("core.tunnel.error.ngrok", ngrok, ShopifyCLI.cache_dir))
170
170
  end
171
171
  end
172
172
 
@@ -178,7 +178,7 @@ module ShopifyCli
178
178
  end
179
179
 
180
180
  def ngrok_command(port)
181
- "\"#{File.join(ShopifyCli.cache_dir, "ngrok")}\" http -inspect=false -log=stdout -log-level=debug #{port}"
181
+ "\"#{File.join(ShopifyCLI.cache_dir, "ngrok")}\" http -inspect=false -log=stdout -log-level=debug #{port}"
182
182
  end
183
183
 
184
184
  def seconds_to_hm(seconds)
@@ -186,14 +186,14 @@ module ShopifyCli
186
186
  end
187
187
 
188
188
  def start_ngrok(ctx, port)
189
- process = ShopifyCli::ProcessSupervision.start(:ngrok, ngrok_command(port))
189
+ process = ShopifyCLI::ProcessSupervision.start(:ngrok, ngrok_command(port))
190
190
  log = fetch_url(ctx, process.log_path)
191
191
  seconds_remaining = (process.time.to_i + log.timeout) - Time.now.to_i
192
192
  [log.url, log.account, seconds_remaining]
193
193
  end
194
194
 
195
195
  def restart_ngrok(ctx, port)
196
- unless ShopifyCli::ProcessSupervision.stop(:ngrok)
196
+ unless ShopifyCLI::ProcessSupervision.stop(:ngrok)
197
197
  ctx.abort(ctx.message("core.tunnel.error.stop"))
198
198
  end
199
199
  start_ngrok(ctx, port)
@@ -0,0 +1,3 @@
1
+ module ShopifyCLI
2
+ VERSION = "2.5.0"
3
+ end
data/lib/shopify_cli.rb CHANGED
@@ -24,7 +24,7 @@ end
24
24
  require "cli/ui"
25
25
  require "cli/kit"
26
26
  require "smart_properties"
27
- require_relative "shopify-cli/version"
27
+ require_relative "shopify_cli/version"
28
28
 
29
29
  # Enable stdout routing. At this point all calls to STDOUT (and STDERR) will go through this class.
30
30
  # See https://github.com/Shopify/cli-ui/blob/main/lib/cli/ui/stdout_router.rb for more info
@@ -36,7 +36,7 @@ CLI::UI::StdoutRouter.enable
36
36
  #
37
37
  # It is recommended to read through CLI Kit (https://github.com/shopify/cli-kit) and a CLI Kit example
38
38
  # (https://github.com/Shopify/cli-kit-example) to fully understand how shopify-cli functions
39
- module ShopifyCli
39
+ module ShopifyCLI
40
40
  extend CLI::Kit::Autocall
41
41
 
42
42
  TOOL_NAME = "shopify"
@@ -75,63 +75,64 @@ module ShopifyCli
75
75
  # application and CLI kit framework.
76
76
  # To understand how this works, read https://github.com/Shopify/cli-kit/blob/main/lib/cli/kit.rb
77
77
 
78
- # ShopifyCli::Config
78
+ # ShopifyCLI::Config
79
79
  autocall(:Config) { CLI::Kit::Config.new(tool_name: TOOL_NAME) }
80
- # ShopifyCli::Logger
81
- autocall(:Logger) { CLI::Kit::Logger.new(debug_log_file: ShopifyCli.debug_log_file) }
82
- # ShopifyCli::Resolver
80
+ # ShopifyCLI::Logger
81
+ autocall(:Logger) { CLI::Kit::Logger.new(debug_log_file: ShopifyCLI.debug_log_file) }
82
+ # ShopifyCLI::Resolver
83
83
  autocall(:Resolver) do
84
- ShopifyCli::Core::HelpResolver.new(
84
+ ShopifyCLI::Core::HelpResolver.new(
85
85
  tool_name: TOOL_NAME,
86
- command_registry: ShopifyCli::Commands::Registry
86
+ command_registry: ShopifyCLI::Commands::Registry
87
87
  )
88
88
  end
89
- # ShopifyCli::ErrorHandler
89
+ # ShopifyCLI::ErrorHandler
90
90
  autocall(:ErrorHandler) do
91
91
  CLI::Kit::ErrorHandler.new(
92
- log_file: ShopifyCli.log_file,
92
+ log_file: ShopifyCLI.log_file,
93
93
  exception_reporter: nil,
94
94
  )
95
95
  end
96
96
 
97
- autoload :Constants, "shopify-cli/constants"
98
- autoload :Environment, "shopify-cli/environment"
99
- autoload :AdminAPI, "shopify-cli/admin_api"
100
- autoload :API, "shopify-cli/api"
101
- autoload :Command, "shopify-cli/command"
102
- autoload :Commands, "shopify-cli/commands"
103
- autoload :Connect, "shopify-cli/connect"
104
- autoload :Context, "shopify-cli/context"
105
- autoload :Core, "shopify-cli/core"
106
- autoload :DB, "shopify-cli/db"
107
- autoload :Feature, "shopify-cli/feature"
108
- autoload :Form, "shopify-cli/form"
109
- autoload :Git, "shopify-cli/git"
110
- autoload :Helpers, "shopify-cli/helpers"
111
- autoload :Heroku, "shopify-cli/heroku"
112
- autoload :IdentityAuth, "shopify-cli/identity_auth"
113
- autoload :JsDeps, "shopify-cli/js_deps"
114
- autoload :JsSystem, "shopify-cli/js_system"
115
- autoload :LazyDelegator, "shopify-cli/lazy_delegator"
116
- autoload :MethodObject, "shopify-cli/method_object"
117
- autoload :Options, "shopify-cli/options"
118
- autoload :PartnersAPI, "shopify-cli/partners_api"
119
- autoload :ProcessSupervision, "shopify-cli/process_supervision"
120
- autoload :Project, "shopify-cli/project"
121
- autoload :ProjectCommands, "shopify-cli/project_commands"
122
- autoload :ProjectType, "shopify-cli/project_type"
123
- autoload :ResolveConstant, "shopify-cli/resolve_constant"
124
- autoload :Resources, "shopify-cli/resources"
125
- autoload :Result, "shopify-cli/result"
126
- autoload :Shopifolk, "shopify-cli/shopifolk"
127
- autoload :SubCommand, "shopify-cli/sub_command"
128
- autoload :Task, "shopify-cli/task"
129
- autoload :Tasks, "shopify-cli/tasks"
130
- autoload :TransformDataStructure, "shopify-cli/transform_data_structure"
131
- autoload :Tunnel, "shopify-cli/tunnel"
132
-
133
- require "shopify-cli/messages/messages"
134
- Context.load_messages(ShopifyCli::Messages::MESSAGES)
97
+ autoload :Constants, "shopify_cli/constants"
98
+ autoload :Environment, "shopify_cli/environment"
99
+ autoload :AdminAPI, "shopify_cli/admin_api"
100
+ autoload :API, "shopify_cli/api"
101
+ autoload :Command, "shopify_cli/command"
102
+ autoload :Commands, "shopify_cli/commands"
103
+ autoload :Connect, "shopify_cli/connect"
104
+ autoload :Context, "shopify_cli/context"
105
+ autoload :Core, "shopify_cli/core"
106
+ autoload :DB, "shopify_cli/db"
107
+ autoload :Feature, "shopify_cli/feature"
108
+ autoload :Form, "shopify_cli/form"
109
+ autoload :Git, "shopify_cli/git"
110
+ autoload :Helpers, "shopify_cli/helpers"
111
+ autoload :Heroku, "shopify_cli/heroku"
112
+ autoload :IdentityAuth, "shopify_cli/identity_auth"
113
+ autoload :JsDeps, "shopify_cli/js_deps"
114
+ autoload :JsSystem, "shopify_cli/js_system"
115
+ autoload :PHPDeps, "shopify_cli/php_deps"
116
+ autoload :LazyDelegator, "shopify_cli/lazy_delegator"
117
+ autoload :MethodObject, "shopify_cli/method_object"
118
+ autoload :Options, "shopify_cli/options"
119
+ autoload :PartnersAPI, "shopify_cli/partners_api"
120
+ autoload :ProcessSupervision, "shopify_cli/process_supervision"
121
+ autoload :Project, "shopify_cli/project"
122
+ autoload :ProjectCommands, "shopify_cli/project_commands"
123
+ autoload :ProjectType, "shopify_cli/project_type"
124
+ autoload :ResolveConstant, "shopify_cli/resolve_constant"
125
+ autoload :Resources, "shopify_cli/resources"
126
+ autoload :Result, "shopify_cli/result"
127
+ autoload :Shopifolk, "shopify_cli/shopifolk"
128
+ autoload :SubCommand, "shopify_cli/sub_command"
129
+ autoload :Task, "shopify_cli/task"
130
+ autoload :Tasks, "shopify_cli/tasks"
131
+ autoload :TransformDataStructure, "shopify_cli/transform_data_structure"
132
+ autoload :Tunnel, "shopify_cli/tunnel"
133
+
134
+ require "shopify_cli/messages/messages"
135
+ Context.load_messages(ShopifyCLI::Messages::MESSAGES)
135
136
 
136
137
  def self.cache_dir
137
138
  cache_dir = if Environment.running_tests?
@@ -168,6 +169,6 @@ module ShopifyCli
168
169
 
169
170
  def self.sha
170
171
  return @sha if defined?(@sha)
171
- @sha = Git.sha(dir: ShopifyCli::ROOT)
172
+ @sha = Git.sha(dir: ShopifyCLI::ROOT)
172
173
  end
173
174
  end
data/shopify-cli.gemspec CHANGED
@@ -1,8 +1,8 @@
1
- require_relative "lib/shopify-cli/version"
1
+ require_relative "lib/shopify_cli/version"
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "shopify-cli"
5
- spec.version = ShopifyCli::VERSION
5
+ spec.version = ShopifyCLI::VERSION
6
6
  spec.authors = ["Shopify"]
7
7
  spec.email = ["dev-tools-education@shopify.com"]
8
8
  spec.license = "MIT"