shopify-cli 1.13.1 → 2.1.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 (200) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -1
  3. data/.github/CONTRIBUTING.md +7 -7
  4. data/.github/DESIGN.md +3 -3
  5. data/.github/workflows/build.yml +1 -1
  6. data/.gitignore +3 -0
  7. data/.rubocop.yml +3 -1
  8. data/.ruby-version +1 -1
  9. data/CHANGELOG.md +60 -26
  10. data/Gemfile +4 -0
  11. data/Gemfile.lock +32 -0
  12. data/LICENSE +4 -1
  13. data/README.md +94 -26
  14. data/RELEASING.md +31 -7
  15. data/Rakefile +2 -2
  16. data/SECURITY.md +1 -1
  17. data/THEMEKIT_MIGRATION.md +18 -0
  18. data/bin/load_shopify.rb +1 -1
  19. data/bin/shopify +3 -3
  20. data/dev.yml +1 -1
  21. data/docs/app/node/index.md +1 -1
  22. data/docs/app/rails/index.md +1 -1
  23. data/docs/core/index.md +1 -1
  24. data/docs/getting-started/index.md +1 -1
  25. data/docs/getting-started/install/index.md +1 -1
  26. data/docs/getting-started/migrate/index.md +1 -1
  27. data/docs/getting-started/uninstall/index.md +1 -1
  28. data/docs/getting-started/upgrade/index.md +1 -1
  29. data/docs/help/start-app/index.md +1 -1
  30. data/docs/index.md +1 -1
  31. data/ext/shopify-cli/extconf.rb +17 -5
  32. data/install.sh +1 -1
  33. data/lib/docgen/index_template.md.erb +2 -2
  34. data/lib/graphql/all_orgs_with_extensions.graphql +37 -0
  35. data/lib/graphql/api_versions.graphql +1 -1
  36. data/lib/graphql/find_organization.graphql +2 -1
  37. data/lib/project_types/extension/cli.rb +19 -15
  38. data/lib/project_types/extension/commands/build.rb +4 -5
  39. data/lib/project_types/extension/commands/check.rb +44 -0
  40. data/lib/project_types/extension/commands/connect.rb +35 -0
  41. data/lib/project_types/extension/commands/create.rb +12 -16
  42. data/lib/project_types/extension/commands/extension_command.rb +2 -2
  43. data/lib/project_types/extension/commands/info.rb +86 -0
  44. data/lib/project_types/extension/commands/push.rb +8 -7
  45. data/lib/project_types/extension/commands/register.rb +4 -5
  46. data/lib/project_types/extension/commands/serve.rb +5 -8
  47. data/lib/project_types/extension/commands/tunnel.rb +3 -1
  48. data/lib/project_types/extension/errors.rb +9 -0
  49. data/lib/project_types/extension/extension_project.rb +24 -1
  50. data/lib/project_types/extension/extension_project_keys.rb +1 -0
  51. data/lib/project_types/extension/features/argo.rb +6 -6
  52. data/lib/project_types/extension/features/argo_runtime.rb +22 -66
  53. data/lib/project_types/extension/features/argo_serve.rb +25 -18
  54. data/lib/project_types/extension/forms/connect.rb +42 -0
  55. data/lib/project_types/extension/forms/questions/ask_name.rb +14 -6
  56. data/lib/project_types/extension/forms/questions/ask_registration.rb +51 -0
  57. data/lib/project_types/extension/messages/messages.rb +84 -16
  58. data/lib/project_types/extension/models/specification.rb +1 -0
  59. data/lib/project_types/extension/models/specification_handlers/{checkout_argo_extension.rb → checkout_ui_extension.rb} +3 -1
  60. data/lib/project_types/extension/models/specification_handlers/default.rb +13 -3
  61. data/lib/project_types/extension/models/specification_handlers/theme_app_extension.rb +89 -0
  62. data/lib/project_types/extension/models/specifications.rb +1 -0
  63. data/lib/project_types/extension/tasks/configure_features.rb +6 -7
  64. data/lib/project_types/extension/tasks/configure_options.rb +20 -0
  65. data/lib/project_types/extension/tasks/get_extensions.rb +32 -0
  66. data/lib/project_types/node/cli.rb +9 -21
  67. data/lib/project_types/node/commands/connect.rb +8 -2
  68. data/lib/project_types/node/commands/create.rb +9 -5
  69. data/lib/project_types/node/commands/deploy.rb +15 -5
  70. data/lib/project_types/node/commands/deploy/heroku.rb +29 -29
  71. data/lib/project_types/node/commands/generate.rb +4 -2
  72. data/lib/project_types/node/commands/open.rb +4 -2
  73. data/lib/project_types/node/commands/serve.rb +3 -2
  74. data/lib/project_types/node/commands/tunnel.rb +4 -2
  75. data/lib/project_types/node/messages/messages.rb +47 -90
  76. data/lib/project_types/rails/cli.rb +9 -21
  77. data/lib/project_types/rails/commands/connect.rb +8 -2
  78. data/lib/project_types/rails/commands/create.rb +10 -6
  79. data/lib/project_types/rails/commands/deploy.rb +15 -5
  80. data/lib/project_types/rails/commands/deploy/heroku.rb +84 -82
  81. data/lib/project_types/rails/commands/generate.rb +15 -5
  82. data/lib/project_types/rails/commands/generate/webhook.rb +28 -26
  83. data/lib/project_types/rails/commands/open.rb +4 -2
  84. data/lib/project_types/rails/commands/serve.rb +3 -2
  85. data/lib/project_types/rails/commands/tunnel.rb +4 -2
  86. data/lib/project_types/rails/messages/messages.rb +72 -119
  87. data/lib/project_types/script/cli.rb +6 -8
  88. data/lib/project_types/script/commands/create.rb +3 -1
  89. data/lib/project_types/script/commands/push.rb +7 -4
  90. data/lib/project_types/script/graphql/app_script_update_or_create.graphql +9 -3
  91. data/lib/project_types/script/layers/application/create_script.rb +4 -3
  92. data/lib/project_types/script/layers/domain/errors.rb +6 -11
  93. data/lib/project_types/script/layers/domain/push_package.rb +4 -8
  94. data/lib/project_types/script/layers/domain/script_json.rb +32 -0
  95. data/lib/project_types/script/layers/domain/script_project.rb +1 -1
  96. data/lib/project_types/script/layers/infrastructure/errors.rb +13 -17
  97. data/lib/project_types/script/layers/infrastructure/languages/assemblyscript_project_creator.rb +29 -21
  98. data/lib/project_types/script/layers/infrastructure/push_package_repository.rb +2 -4
  99. data/lib/project_types/script/layers/infrastructure/script_project_repository.rb +45 -34
  100. data/lib/project_types/script/layers/infrastructure/script_service.rb +37 -16
  101. data/lib/project_types/script/messages/messages.rb +64 -54
  102. data/lib/project_types/script/tasks/ensure_env.rb +3 -1
  103. data/lib/project_types/script/ui/error_handler.rb +32 -32
  104. data/lib/project_types/theme/cli.rb +16 -27
  105. data/lib/project_types/theme/commands/check.rb +33 -0
  106. data/lib/project_types/theme/commands/delete.rb +64 -0
  107. data/lib/project_types/theme/commands/init.rb +42 -0
  108. data/lib/project_types/theme/commands/language_server.rb +16 -0
  109. data/lib/project_types/theme/commands/package.rb +55 -0
  110. data/lib/project_types/theme/commands/publish.rb +43 -0
  111. data/lib/project_types/theme/commands/pull.rb +51 -0
  112. data/lib/project_types/theme/commands/push.rb +58 -32
  113. data/lib/project_types/theme/commands/serve.rb +8 -16
  114. data/lib/project_types/theme/forms/confirm_store.rb +15 -0
  115. data/lib/project_types/theme/forms/select.rb +59 -0
  116. data/lib/project_types/theme/messages/messages.rb +118 -103
  117. data/lib/project_types/theme/ui/sync_progress_bar.rb +20 -0
  118. data/lib/shopify-cli/admin_api.rb +57 -38
  119. data/lib/shopify-cli/admin_api/populate_resource_command.rb +6 -14
  120. data/lib/shopify-cli/admin_api/schema.rb +1 -10
  121. data/lib/shopify-cli/api.rb +29 -14
  122. data/lib/shopify-cli/command.rb +15 -3
  123. data/lib/shopify-cli/commands.rb +7 -2
  124. data/lib/shopify-cli/commands/help.rb +2 -29
  125. data/lib/shopify-cli/commands/login.rb +95 -0
  126. data/lib/shopify-cli/commands/logout.rb +24 -8
  127. data/lib/shopify-cli/commands/populate.rb +23 -0
  128. data/lib/{project_types/node → shopify-cli}/commands/populate/customer.rb +2 -8
  129. data/lib/{project_types/node → shopify-cli}/commands/populate/draft_order.rb +2 -2
  130. data/lib/{project_types/node → shopify-cli}/commands/populate/product.rb +2 -8
  131. data/lib/shopify-cli/commands/store.rb +15 -0
  132. data/lib/shopify-cli/commands/switch.rb +39 -0
  133. data/lib/shopify-cli/commands/system.rb +12 -0
  134. data/lib/shopify-cli/commands/whoami.rb +28 -0
  135. data/lib/shopify-cli/connect.rb +32 -0
  136. data/lib/shopify-cli/context.rb +65 -4
  137. data/lib/shopify-cli/core/entry_point.rb +3 -22
  138. data/lib/shopify-cli/core/monorail.rb +6 -2
  139. data/lib/shopify-cli/db.rb +4 -4
  140. data/lib/shopify-cli/http_request.rb +16 -0
  141. data/lib/shopify-cli/identity_auth.rb +282 -0
  142. data/lib/shopify-cli/{oauth → identity_auth}/servlet.rb +11 -12
  143. data/lib/shopify-cli/messages/messages.rb +140 -46
  144. data/lib/shopify-cli/packager.rb +5 -5
  145. data/lib/shopify-cli/partners_api.rb +21 -44
  146. data/lib/shopify-cli/partners_api/organizations.rb +8 -0
  147. data/lib/shopify-cli/project_commands.rb +16 -0
  148. data/lib/shopify-cli/project_type.rb +0 -31
  149. data/lib/shopify-cli/shopifolk.rb +8 -11
  150. data/lib/shopify-cli/sub_command.rb +1 -0
  151. data/lib/shopify-cli/tasks.rb +3 -0
  152. data/lib/shopify-cli/tasks/confirm_store.rb +18 -0
  153. data/lib/shopify-cli/tasks/create_api_client.rb +2 -2
  154. data/lib/shopify-cli/tasks/ensure_authenticated.rb +13 -0
  155. data/lib/shopify-cli/tasks/ensure_loopback_url.rb +1 -1
  156. data/lib/shopify-cli/tasks/ensure_project_type.rb +12 -0
  157. data/lib/shopify-cli/tasks/select_org_and_shop.rb +0 -3
  158. data/lib/shopify-cli/theme/dev_server.rb +98 -0
  159. data/lib/shopify-cli/theme/dev_server/certificate_manager.rb +79 -0
  160. data/lib/shopify-cli/theme/dev_server/header_hash.rb +94 -0
  161. data/lib/shopify-cli/theme/dev_server/hot-reload.js +93 -0
  162. data/lib/shopify-cli/theme/dev_server/hot_reload.rb +76 -0
  163. data/lib/shopify-cli/theme/dev_server/local_assets.rb +87 -0
  164. data/lib/shopify-cli/theme/dev_server/proxy.rb +205 -0
  165. data/lib/shopify-cli/theme/dev_server/sse.rb +75 -0
  166. data/lib/shopify-cli/theme/dev_server/watcher.rb +59 -0
  167. data/lib/shopify-cli/theme/dev_server/web_server.rb +140 -0
  168. data/lib/shopify-cli/theme/development_theme.rb +69 -0
  169. data/lib/shopify-cli/theme/file.rb +112 -0
  170. data/lib/shopify-cli/theme/ignore_filter.rb +109 -0
  171. data/lib/shopify-cli/theme/mime_type.rb +34 -0
  172. data/lib/shopify-cli/theme/syncer.rb +332 -0
  173. data/lib/shopify-cli/theme/theme.rb +204 -0
  174. data/lib/shopify-cli/tunnel.rb +1 -1
  175. data/lib/shopify-cli/version.rb +1 -1
  176. data/lib/shopify_cli.rb +18 -11
  177. data/shopify-cli.gemspec +12 -5
  178. data/shopify.fish +1 -1
  179. data/shopify.sh +1 -1
  180. metadata +92 -35
  181. data/.github/workflows/release.yml +0 -59
  182. data/lib/project_types/extension/features/argo_serve_options.rb +0 -42
  183. data/lib/project_types/node/commands/populate.rb +0 -23
  184. data/lib/project_types/rails/commands/populate.rb +0 -23
  185. data/lib/project_types/rails/commands/populate/customer.rb +0 -31
  186. data/lib/project_types/rails/commands/populate/draft_order.rb +0 -28
  187. data/lib/project_types/rails/commands/populate/product.rb +0 -30
  188. data/lib/project_types/script/layers/domain/config_ui.rb +0 -16
  189. data/lib/project_types/theme/commands/connect.rb +0 -54
  190. data/lib/project_types/theme/commands/create.rb +0 -48
  191. data/lib/project_types/theme/commands/deploy.rb +0 -38
  192. data/lib/project_types/theme/commands/generate.rb +0 -20
  193. data/lib/project_types/theme/commands/generate/env.rb +0 -79
  194. data/lib/project_types/theme/forms/connect.rb +0 -34
  195. data/lib/project_types/theme/forms/create.rb +0 -22
  196. data/lib/project_types/theme/tasks/ensure_themekit_installed.rb +0 -78
  197. data/lib/project_types/theme/themekit.rb +0 -113
  198. data/lib/shopify-cli/commands/connect.rb +0 -64
  199. data/lib/shopify-cli/commands/create.rb +0 -50
  200. data/lib/shopify-cli/oauth.rb +0 -198
@@ -0,0 +1,204 @@
1
+ # frozen_string_literal: true
2
+ require_relative "file"
3
+
4
+ require "pathname"
5
+ require "time"
6
+
7
+ module ShopifyCli
8
+ module Theme
9
+ class InvalidThemeRole < StandardError; end
10
+
11
+ class Theme
12
+ attr_reader :root, :id
13
+
14
+ def initialize(ctx, root: nil, id: nil, name: nil, role: nil)
15
+ @ctx = ctx
16
+ @root = Pathname.new(root) if root
17
+ @id = id
18
+ @name = name
19
+ @role = role
20
+ end
21
+
22
+ def theme_files
23
+ glob(["**/*.liquid", "**/*.json", "assets/*"]).uniq
24
+ end
25
+
26
+ def static_asset_files
27
+ glob("assets/*").reject(&:liquid?)
28
+ end
29
+
30
+ def liquid_files
31
+ glob("**/*.liquid")
32
+ end
33
+
34
+ def json_files
35
+ glob("**/*.json")
36
+ end
37
+
38
+ def glob(pattern)
39
+ root.glob(pattern).map { |path| File.new(path, root) }
40
+ end
41
+
42
+ def theme_file?(file)
43
+ theme_files.include?(self[file])
44
+ end
45
+
46
+ def static_asset_paths
47
+ static_asset_files.map(&:relative_path)
48
+ end
49
+
50
+ def [](file)
51
+ case file
52
+ when File
53
+ file
54
+ when Pathname
55
+ File.new(file, root)
56
+ when String
57
+ File.new(root.join(file), root)
58
+ end
59
+ end
60
+
61
+ def shop
62
+ AdminAPI.get_shop_or_abort(@ctx)
63
+ end
64
+
65
+ def editor_url
66
+ "https://#{shop}/admin/themes/#{id}/editor"
67
+ end
68
+
69
+ def name
70
+ return @name if @name
71
+ load_info_from_api.name
72
+ end
73
+
74
+ def role
75
+ if @role == "main"
76
+ # Main theme is called Live in UI
77
+ "live"
78
+ elsif @role
79
+ @role
80
+ else
81
+ load_info_from_api.role
82
+ end
83
+ end
84
+
85
+ def live?
86
+ role == "live"
87
+ end
88
+
89
+ def development?
90
+ role == "development"
91
+ end
92
+
93
+ def preview_url
94
+ if live?
95
+ "https://#{shop}/"
96
+ else
97
+ "https://#{shop}/?preview_theme_id=#{id}"
98
+ end
99
+ end
100
+
101
+ def create
102
+ raise InvalidThemeRole, "Can't create live theme. Use publish." if live?
103
+
104
+ _status, body = ShopifyCli::AdminAPI.rest_request(
105
+ @ctx,
106
+ shop: shop,
107
+ path: "themes.json",
108
+ body: JSON.generate({
109
+ theme: {
110
+ name: name,
111
+ role: role,
112
+ },
113
+ }),
114
+ method: "POST",
115
+ api_version: "unstable",
116
+ )
117
+
118
+ @id = body["theme"]["id"]
119
+ end
120
+
121
+ def delete
122
+ AdminAPI.rest_request(
123
+ @ctx,
124
+ shop: shop,
125
+ method: "DELETE",
126
+ path: "themes/#{id}.json",
127
+ api_version: "unstable",
128
+ )
129
+ end
130
+
131
+ def publish
132
+ return if live?
133
+ AdminAPI.rest_request(
134
+ @ctx,
135
+ shop: shop,
136
+ method: "PUT",
137
+ path: "themes/#{id}.json",
138
+ api_version: "unstable",
139
+ body: JSON.generate(theme: {
140
+ role: "main",
141
+ })
142
+ )
143
+ @role = "live"
144
+ end
145
+
146
+ def current_development?
147
+ development? && id == ShopifyCli::DB.get(:development_theme_id)
148
+ end
149
+
150
+ def foreign_development?
151
+ development? && id != ShopifyCli::DB.get(:development_theme_id)
152
+ end
153
+
154
+ def to_h
155
+ {
156
+ id: id,
157
+ name: name,
158
+ role: role,
159
+ shop: shop,
160
+ editor_url: editor_url,
161
+ preview_url: preview_url,
162
+ }
163
+ end
164
+
165
+ def self.all(ctx, root: nil)
166
+ _status, body = AdminAPI.rest_request(
167
+ ctx,
168
+ shop: AdminAPI.get_shop_or_abort(ctx),
169
+ path: "themes.json",
170
+ api_version: "unstable",
171
+ )
172
+
173
+ body["themes"]
174
+ .sort_by { |attributes| Time.parse(attributes["updated_at"]) }
175
+ .reverse
176
+ .map do |attributes|
177
+ new(
178
+ ctx,
179
+ root: root,
180
+ id: attributes["id"],
181
+ name: attributes["name"],
182
+ role: attributes["role"],
183
+ )
184
+ end
185
+ end
186
+
187
+ private
188
+
189
+ def load_info_from_api
190
+ _status, body = AdminAPI.rest_request(
191
+ @ctx,
192
+ shop: shop,
193
+ path: "themes/#{id}.json",
194
+ api_version: "unstable",
195
+ )
196
+
197
+ @name = body.dig("theme", "name")
198
+ @role = body.dig("theme", "role")
199
+
200
+ self
201
+ end
202
+ end
203
+ end
204
+ end
@@ -149,7 +149,7 @@ module ShopifyCli
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
- spinner.add("Installing ngrok...") do
152
+ spinner.add(ctx.message("core.tunnel.installing")) do
153
153
  zip_dest = File.join(ShopifyCli.cache_dir, "ngrok.zip")
154
154
  unless File.exist?(zip_dest)
155
155
  ctx.system("curl", "-o", zip_dest, DOWNLOAD_URLS[ctx.os], chdir: ShopifyCli.cache_dir)
@@ -1,3 +1,3 @@
1
1
  module ShopifyCli
2
- VERSION = "1.13.1"
2
+ VERSION = "2.1.0"
3
3
  end
data/lib/shopify_cli.rb CHANGED
@@ -27,15 +27,15 @@ require "smart_properties"
27
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
- # See https://github.com/Shopify/cli-ui/blob/master/lib/cli/ui/stdout_router.rb for more info
30
+ # See https://github.com/Shopify/cli-ui/blob/main/lib/cli/ui/stdout_router.rb for more info
31
31
  CLI::UI::StdoutRouter.enable
32
32
 
33
- # The main file to load for `shopify-app-cli`
33
+ # The main file to load for `shopify-cli`
34
34
  # Contains all high level constants, exit management, exception management,
35
35
  # autoloads for commands, tasks, helpers, etc
36
36
  #
37
37
  # It is recommended to read through CLI Kit (https://github.com/shopify/cli-kit) and a CLI Kit example
38
- # (https://github.com/Shopify/cli-kit-example) to fully understand how shopify-app-cli functions
38
+ # (https://github.com/Shopify/cli-kit-example) to fully understand how shopify-cli functions
39
39
  module ShopifyCli
40
40
  extend CLI::Kit::Autocall
41
41
 
@@ -50,8 +50,8 @@ module ShopifyCli
50
50
  # shrug or boom emoji
51
51
  FAILMOJI = ROOT == "/opt/shopify" ? "\u{1f937}" : "\u{1f4a5}"
52
52
 
53
- # Exit management in `shopify-app-cli` follows the management set out by CLI Kit.
54
- # https://github.com/Shopify/cli-kit/blob/master/lib/cli/kit.rb
53
+ # Exit management in `shopify-cli` follows the management set out by CLI Kit.
54
+ # https://github.com/Shopify/cli-kit/blob/main/lib/cli/kit.rb
55
55
  # That is to say, we differentiate between exit success (0), exit failure (1), and exit bug (not 1)
56
56
  #
57
57
  # These should *never* be called outside of the entrypoint and its delegations.
@@ -59,8 +59,8 @@ module ShopifyCli
59
59
  EXIT_BUG = CLI::Kit::EXIT_BUG
60
60
  EXIT_SUCCESS = CLI::Kit::EXIT_SUCCESS
61
61
 
62
- # `shopify-app-cli` uses CLI Kit's exception management
63
- # These are documented here: https://github.com/Shopify/cli-kit/blob/master/lib/cli/kit.rb
62
+ # `shopify-cli` uses CLI Kit's exception management
63
+ # These are documented here: https://github.com/Shopify/cli-kit/blob/main/lib/cli/kit.rb
64
64
  #
65
65
  # You should never subclass these exceptions, but instead rescue another exception and re-raise.
66
66
  # AbortSilent and BugSilent should never have messages. They are mostly used when we output explanations
@@ -71,9 +71,9 @@ module ShopifyCli
71
71
  BugSilent = CLI::Kit::BugSilent
72
72
  AbortSilent = CLI::Kit::AbortSilent
73
73
 
74
- # The rest of this file outlines classes and modules required by the shopify-app-cli
74
+ # The rest of this file outlines classes and modules required by the shopify-cli
75
75
  # application and CLI kit framework.
76
- # To understand how this works, read https://github.com/Shopify/cli-kit/blob/master/lib/cli/kit.rb
76
+ # To understand how this works, read https://github.com/Shopify/cli-kit/blob/main/lib/cli/kit.rb
77
77
 
78
78
  # ShopifyCli::Config
79
79
  autocall(:Config) { CLI::Kit::Config.new(tool_name: TOOL_NAME) }
@@ -98,6 +98,7 @@ module ShopifyCli
98
98
  autoload :API, "shopify-cli/api"
99
99
  autoload :Command, "shopify-cli/command"
100
100
  autoload :Commands, "shopify-cli/commands"
101
+ autoload :Connect, "shopify-cli/connect"
101
102
  autoload :Context, "shopify-cli/context"
102
103
  autoload :Core, "shopify-cli/core"
103
104
  autoload :DB, "shopify-cli/db"
@@ -106,15 +107,16 @@ module ShopifyCli
106
107
  autoload :Git, "shopify-cli/git"
107
108
  autoload :Helpers, "shopify-cli/helpers"
108
109
  autoload :Heroku, "shopify-cli/heroku"
110
+ autoload :IdentityAuth, "shopify-cli/identity_auth"
109
111
  autoload :JsDeps, "shopify-cli/js_deps"
110
112
  autoload :JsSystem, "shopify-cli/js_system"
111
- autoload :MethodObject, "shopify-cli/method_object"
112
113
  autoload :LazyDelegator, "shopify-cli/lazy_delegator"
113
- autoload :OAuth, "shopify-cli/oauth"
114
+ autoload :MethodObject, "shopify-cli/method_object"
114
115
  autoload :Options, "shopify-cli/options"
115
116
  autoload :PartnersAPI, "shopify-cli/partners_api"
116
117
  autoload :ProcessSupervision, "shopify-cli/process_supervision"
117
118
  autoload :Project, "shopify-cli/project"
119
+ autoload :ProjectCommands, "shopify-cli/project_commands"
118
120
  autoload :ProjectType, "shopify-cli/project_type"
119
121
  autoload :ResolveConstant, "shopify-cli/resolve_constant"
120
122
  autoload :Resources, "shopify-cli/resources"
@@ -161,4 +163,9 @@ module ShopifyCli
161
163
  def self.debug_log_file
162
164
  File.join(tool_config_path, "logs", "debug.log")
163
165
  end
166
+
167
+ def self.sha
168
+ return @sha if defined?(@sha)
169
+ @sha = Git.sha(dir: ShopifyCli::ROOT)
170
+ end
164
171
  end
data/shopify-cli.gemspec CHANGED
@@ -14,14 +14,14 @@ Gem::Specification.new do |spec|
14
14
  development process and lets you quickly add popular features, such as billing
15
15
  and webhooks.
16
16
  HERE
17
- spec.homepage = "https://shopify.github.io/shopify-app-cli/"
18
- spec.required_ruby_version = Gem::Requirement.new(">= 2.5")
17
+ spec.homepage = "https://shopify.github.io/shopify-cli/"
18
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.6")
19
19
 
20
20
  spec.metadata["allowed_push_host"] = "https://rubygems.org"
21
21
 
22
22
  spec.metadata["homepage_uri"] = spec.homepage
23
- spec.metadata["source_code_uri"] = "https://github.com/Shopify/shopify-app-cli"
24
- spec.metadata["changelog_uri"] = "https://github.com/Shopify/shopify-app-cli/blob/master/CHANGELOG.md"
23
+ spec.metadata["source_code_uri"] = "https://github.com/Shopify/shopify-cli"
24
+ spec.metadata["changelog_uri"] = "https://github.com/Shopify/shopify-cli/blob/main/CHANGELOG.md"
25
25
 
26
26
  # Specify which files should be added to the gem when it is released.
27
27
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -34,8 +34,15 @@ Gem::Specification.new do |spec|
34
34
  spec.bindir = "bin"
35
35
  spec.require_paths = ["lib", "vendor"]
36
36
  spec.extensions = ["ext/shopify-cli/extconf.rb"]
37
+ # Do NOT include `shopify` as a listed executable via `spec.executables`.
38
+ # `ext/shopify-cli/extconf.rb` will dynamically create a script and soft-link
39
+ # `/usr/local/bin/shopify` to that script, in order to "lock" the Ruby used to
40
+ # a single Ruby (useful for debugging in multi-Ruby environments)
37
41
 
38
- spec.add_development_dependency("bundler", "~> 1.17")
42
+ spec.add_development_dependency("bundler", "~> 2.1.4")
39
43
  spec.add_development_dependency("rake", "~> 12.3", ">= 12.3.3")
40
44
  spec.add_development_dependency("minitest", "~> 5.0")
45
+
46
+ spec.add_dependency("listen", "~> 3.5")
47
+ spec.add_dependency("theme-check", "~> 1.1")
41
48
  end
data/shopify.fish CHANGED
@@ -4,7 +4,7 @@
4
4
  # If we're not already in a shim environment but still tried to set up a shim, print out the re-installation warning
5
5
  type -t shopify > /dev/null 2>&1
6
6
  if [ $status != "0" ]
7
- echo "This version of Shopify App CLI is no longer supported. You’ll need to migrate to the new CLI version to continue.
7
+ echo "This version of Shopify CLI is no longer supported. You’ll need to migrate to the new CLI version to continue.
8
8
 
9
9
  Please visit this page for complete instructions:
10
10
  https://shopify.dev/tools/cli/troubleshooting#migrate-from-a-legacy-version
data/shopify.sh CHANGED
@@ -3,7 +3,7 @@
3
3
  # If we're not already in a shim environment but still tried to set up a shim, print out the re-installation warning
4
4
  typeset -f shopify > /dev/null 2>&1
5
5
  if [ "$?" != "0" ]; then
6
- echo "This version of Shopify App CLI is no longer supported. You’ll need to migrate to the new CLI version to continue.
6
+ echo "This version of Shopify CLI is no longer supported. You’ll need to migrate to the new CLI version to continue.
7
7
 
8
8
  Please visit this page for complete instructions:
9
9
  https://shopify.dev/tools/cli/troubleshooting#migrate-from-a-legacy-version
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shopify-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-14 00:00:00.000000000 Z
11
+ date: 2021-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.17'
19
+ version: 2.1.4
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.17'
26
+ version: 2.1.4
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -58,6 +58,34 @@ dependencies:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
60
  version: '5.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: listen
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.5'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.5'
75
+ - !ruby/object:Gem::Dependency
76
+ name: theme-check
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.1'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.1'
61
89
  description: |
62
90
  Shopify CLI helps you build Shopify apps faster. It quickly scaffolds Node.js
63
91
  and Ruby on Rails embedded apps. It also automates many common tasks in the
@@ -78,7 +106,6 @@ files:
78
106
  - ".github/PULL_REQUEST_TEMPLATE.md"
79
107
  - ".github/probots.yml"
80
108
  - ".github/workflows/build.yml"
81
- - ".github/workflows/release.yml"
82
109
  - ".github/workflows/triage.yml"
83
110
  - ".gitignore"
84
111
  - ".rubocop.yml"
@@ -94,6 +121,7 @@ files:
94
121
  - RELEASING.md
95
122
  - Rakefile
96
123
  - SECURITY.md
124
+ - THEMEKIT_MIGRATION.md
97
125
  - bin/load_shopify.rb
98
126
  - bin/shopify
99
127
  - dev.yml
@@ -118,6 +146,7 @@ files:
118
146
  - lib/graphql/admin_introspection.graphql
119
147
  - lib/graphql/all_organizations.graphql
120
148
  - lib/graphql/all_orgs_with_apps.graphql
149
+ - lib/graphql/all_orgs_with_extensions.graphql
121
150
  - lib/graphql/api_versions.graphql
122
151
  - lib/graphql/convert_dev_to_test_store.graphql
123
152
  - lib/graphql/create_app.graphql
@@ -133,12 +162,16 @@ files:
133
162
  - lib/graphql/update_dashboard_urls.graphql
134
163
  - lib/project_types/extension/cli.rb
135
164
  - lib/project_types/extension/commands/build.rb
165
+ - lib/project_types/extension/commands/check.rb
166
+ - lib/project_types/extension/commands/connect.rb
136
167
  - lib/project_types/extension/commands/create.rb
137
168
  - lib/project_types/extension/commands/extension_command.rb
169
+ - lib/project_types/extension/commands/info.rb
138
170
  - lib/project_types/extension/commands/push.rb
139
171
  - lib/project_types/extension/commands/register.rb
140
172
  - lib/project_types/extension/commands/serve.rb
141
173
  - lib/project_types/extension/commands/tunnel.rb
174
+ - lib/project_types/extension/errors.rb
142
175
  - lib/project_types/extension/extension_project.rb
143
176
  - lib/project_types/extension/extension_project_keys.rb
144
177
  - lib/project_types/extension/features/argo.rb
@@ -146,13 +179,14 @@ files:
146
179
  - lib/project_types/extension/features/argo_dependencies.rb
147
180
  - lib/project_types/extension/features/argo_runtime.rb
148
181
  - lib/project_types/extension/features/argo_serve.rb
149
- - lib/project_types/extension/features/argo_serve_options.rb
150
182
  - lib/project_types/extension/features/argo_setup.rb
151
183
  - lib/project_types/extension/features/argo_setup_step.rb
152
184
  - lib/project_types/extension/features/argo_setup_steps.rb
185
+ - lib/project_types/extension/forms/connect.rb
153
186
  - lib/project_types/extension/forms/create.rb
154
187
  - lib/project_types/extension/forms/questions/ask_app.rb
155
188
  - lib/project_types/extension/forms/questions/ask_name.rb
189
+ - lib/project_types/extension/forms/questions/ask_registration.rb
156
190
  - lib/project_types/extension/forms/questions/ask_type.rb
157
191
  - lib/project_types/extension/messages/message_loading.rb
158
192
  - lib/project_types/extension/messages/messages.rb
@@ -161,14 +195,16 @@ files:
161
195
  - lib/project_types/extension/models/npm_package.rb
162
196
  - lib/project_types/extension/models/registration.rb
163
197
  - lib/project_types/extension/models/specification.rb
164
- - lib/project_types/extension/models/specification_handlers/checkout_argo_extension.rb
165
198
  - lib/project_types/extension/models/specification_handlers/checkout_post_purchase.rb
199
+ - lib/project_types/extension/models/specification_handlers/checkout_ui_extension.rb
166
200
  - lib/project_types/extension/models/specification_handlers/default.rb
201
+ - lib/project_types/extension/models/specification_handlers/theme_app_extension.rb
167
202
  - lib/project_types/extension/models/specifications.rb
168
203
  - lib/project_types/extension/models/validation_error.rb
169
204
  - lib/project_types/extension/models/version.rb
170
205
  - lib/project_types/extension/tasks/choose_next_available_port.rb
171
206
  - lib/project_types/extension/tasks/configure_features.rb
207
+ - lib/project_types/extension/tasks/configure_options.rb
172
208
  - lib/project_types/extension/tasks/converters/app_converter.rb
173
209
  - lib/project_types/extension/tasks/converters/registration_converter.rb
174
210
  - lib/project_types/extension/tasks/converters/validation_error_converter.rb
@@ -178,6 +214,7 @@ files:
178
214
  - lib/project_types/extension/tasks/find_npm_packages.rb
179
215
  - lib/project_types/extension/tasks/get_app.rb
180
216
  - lib/project_types/extension/tasks/get_apps.rb
217
+ - lib/project_types/extension/tasks/get_extensions.rb
181
218
  - lib/project_types/extension/tasks/update_draft.rb
182
219
  - lib/project_types/extension/tasks/user_errors.rb
183
220
  - lib/project_types/node/cli.rb
@@ -187,10 +224,6 @@ files:
187
224
  - lib/project_types/node/commands/deploy/heroku.rb
188
225
  - lib/project_types/node/commands/generate.rb
189
226
  - lib/project_types/node/commands/open.rb
190
- - lib/project_types/node/commands/populate.rb
191
- - lib/project_types/node/commands/populate/customer.rb
192
- - lib/project_types/node/commands/populate/draft_order.rb
193
- - lib/project_types/node/commands/populate/product.rb
194
227
  - lib/project_types/node/commands/serve.rb
195
228
  - lib/project_types/node/commands/tunnel.rb
196
229
  - lib/project_types/node/forms/create.rb
@@ -203,10 +236,6 @@ files:
203
236
  - lib/project_types/rails/commands/generate.rb
204
237
  - lib/project_types/rails/commands/generate/webhook.rb
205
238
  - lib/project_types/rails/commands/open.rb
206
- - lib/project_types/rails/commands/populate.rb
207
- - lib/project_types/rails/commands/populate/customer.rb
208
- - lib/project_types/rails/commands/populate/draft_order.rb
209
- - lib/project_types/rails/commands/populate/product.rb
210
239
  - lib/project_types/rails/commands/serve.rb
211
240
  - lib/project_types/rails/commands/tunnel.rb
212
241
  - lib/project_types/rails/forms/create.rb
@@ -227,11 +256,11 @@ files:
227
256
  - lib/project_types/script/layers/application/extension_points.rb
228
257
  - lib/project_types/script/layers/application/project_dependencies.rb
229
258
  - lib/project_types/script/layers/application/push_script.rb
230
- - lib/project_types/script/layers/domain/config_ui.rb
231
259
  - lib/project_types/script/layers/domain/errors.rb
232
260
  - lib/project_types/script/layers/domain/extension_point.rb
233
261
  - lib/project_types/script/layers/domain/metadata.rb
234
262
  - lib/project_types/script/layers/domain/push_package.rb
263
+ - lib/project_types/script/layers/domain/script_json.rb
235
264
  - lib/project_types/script/layers/domain/script_project.rb
236
265
  - lib/project_types/script/layers/infrastructure/command_runner.rb
237
266
  - lib/project_types/script/layers/infrastructure/errors.rb
@@ -251,18 +280,19 @@ files:
251
280
  - lib/project_types/script/ui/printing_spinner.rb
252
281
  - lib/project_types/script/ui/strict_spinner.rb
253
282
  - lib/project_types/theme/cli.rb
254
- - lib/project_types/theme/commands/connect.rb
255
- - lib/project_types/theme/commands/create.rb
256
- - lib/project_types/theme/commands/deploy.rb
257
- - lib/project_types/theme/commands/generate.rb
258
- - lib/project_types/theme/commands/generate/env.rb
283
+ - lib/project_types/theme/commands/check.rb
284
+ - lib/project_types/theme/commands/delete.rb
285
+ - lib/project_types/theme/commands/init.rb
286
+ - lib/project_types/theme/commands/language_server.rb
287
+ - lib/project_types/theme/commands/package.rb
288
+ - lib/project_types/theme/commands/publish.rb
289
+ - lib/project_types/theme/commands/pull.rb
259
290
  - lib/project_types/theme/commands/push.rb
260
291
  - lib/project_types/theme/commands/serve.rb
261
- - lib/project_types/theme/forms/connect.rb
262
- - lib/project_types/theme/forms/create.rb
292
+ - lib/project_types/theme/forms/confirm_store.rb
293
+ - lib/project_types/theme/forms/select.rb
263
294
  - lib/project_types/theme/messages/messages.rb
264
- - lib/project_types/theme/tasks/ensure_themekit_installed.rb
265
- - lib/project_types/theme/themekit.rb
295
+ - lib/project_types/theme/ui/sync_progress_bar.rb
266
296
  - lib/rubygems_plugin.rb
267
297
  - lib/shopify-cli/admin_api.rb
268
298
  - lib/shopify-cli/admin_api/populate_resource_command.rb
@@ -271,12 +301,19 @@ files:
271
301
  - lib/shopify-cli/command.rb
272
302
  - lib/shopify-cli/commands.rb
273
303
  - lib/shopify-cli/commands/config.rb
274
- - lib/shopify-cli/commands/connect.rb
275
- - lib/shopify-cli/commands/create.rb
276
304
  - lib/shopify-cli/commands/help.rb
305
+ - lib/shopify-cli/commands/login.rb
277
306
  - lib/shopify-cli/commands/logout.rb
307
+ - lib/shopify-cli/commands/populate.rb
308
+ - lib/shopify-cli/commands/populate/customer.rb
309
+ - lib/shopify-cli/commands/populate/draft_order.rb
310
+ - lib/shopify-cli/commands/populate/product.rb
311
+ - lib/shopify-cli/commands/store.rb
312
+ - lib/shopify-cli/commands/switch.rb
278
313
  - lib/shopify-cli/commands/system.rb
279
314
  - lib/shopify-cli/commands/version.rb
315
+ - lib/shopify-cli/commands/whoami.rb
316
+ - lib/shopify-cli/connect.rb
280
317
  - lib/shopify-cli/context.rb
281
318
  - lib/shopify-cli/core.rb
282
319
  - lib/shopify-cli/core/entry_point.rb
@@ -292,19 +329,20 @@ files:
292
329
  - lib/shopify-cli/helpers/haikunator.rb
293
330
  - lib/shopify-cli/heroku.rb
294
331
  - lib/shopify-cli/http_request.rb
332
+ - lib/shopify-cli/identity_auth.rb
333
+ - lib/shopify-cli/identity_auth/servlet.rb
295
334
  - lib/shopify-cli/js_deps.rb
296
335
  - lib/shopify-cli/js_system.rb
297
336
  - lib/shopify-cli/lazy_delegator.rb
298
337
  - lib/shopify-cli/messages/messages.rb
299
338
  - lib/shopify-cli/method_object.rb
300
- - lib/shopify-cli/oauth.rb
301
- - lib/shopify-cli/oauth/servlet.rb
302
339
  - lib/shopify-cli/options.rb
303
340
  - lib/shopify-cli/packager.rb
304
341
  - lib/shopify-cli/partners_api.rb
305
342
  - lib/shopify-cli/partners_api/organizations.rb
306
343
  - lib/shopify-cli/process_supervision.rb
307
344
  - lib/shopify-cli/project.rb
345
+ - lib/shopify-cli/project_commands.rb
308
346
  - lib/shopify-cli/project_type.rb
309
347
  - lib/shopify-cli/resolve_constant.rb
310
348
  - lib/shopify-cli/resources.rb
@@ -314,12 +352,31 @@ files:
314
352
  - lib/shopify-cli/sub_command.rb
315
353
  - lib/shopify-cli/task.rb
316
354
  - lib/shopify-cli/tasks.rb
355
+ - lib/shopify-cli/tasks/confirm_store.rb
317
356
  - lib/shopify-cli/tasks/create_api_client.rb
357
+ - lib/shopify-cli/tasks/ensure_authenticated.rb
318
358
  - lib/shopify-cli/tasks/ensure_dev_store.rb
319
359
  - lib/shopify-cli/tasks/ensure_env.rb
320
360
  - lib/shopify-cli/tasks/ensure_loopback_url.rb
361
+ - lib/shopify-cli/tasks/ensure_project_type.rb
321
362
  - lib/shopify-cli/tasks/select_org_and_shop.rb
322
363
  - lib/shopify-cli/tasks/update_dashboard_urls.rb
364
+ - lib/shopify-cli/theme/dev_server.rb
365
+ - lib/shopify-cli/theme/dev_server/certificate_manager.rb
366
+ - lib/shopify-cli/theme/dev_server/header_hash.rb
367
+ - lib/shopify-cli/theme/dev_server/hot-reload.js
368
+ - lib/shopify-cli/theme/dev_server/hot_reload.rb
369
+ - lib/shopify-cli/theme/dev_server/local_assets.rb
370
+ - lib/shopify-cli/theme/dev_server/proxy.rb
371
+ - lib/shopify-cli/theme/dev_server/sse.rb
372
+ - lib/shopify-cli/theme/dev_server/watcher.rb
373
+ - lib/shopify-cli/theme/dev_server/web_server.rb
374
+ - lib/shopify-cli/theme/development_theme.rb
375
+ - lib/shopify-cli/theme/file.rb
376
+ - lib/shopify-cli/theme/ignore_filter.rb
377
+ - lib/shopify-cli/theme/mime_type.rb
378
+ - lib/shopify-cli/theme/syncer.rb
379
+ - lib/shopify-cli/theme/theme.rb
323
380
  - lib/shopify-cli/transform_data_structure.rb
324
381
  - lib/shopify-cli/tunnel.rb
325
382
  - lib/shopify-cli/version.rb
@@ -447,14 +504,14 @@ files:
447
504
  - vendor/lib/semantic/LICENSE
448
505
  - vendor/lib/semantic/semantic.rb
449
506
  - vendor/lib/semantic/version.rb
450
- homepage: https://shopify.github.io/shopify-app-cli/
507
+ homepage: https://shopify.github.io/shopify-cli/
451
508
  licenses:
452
509
  - MIT
453
510
  metadata:
454
511
  allowed_push_host: https://rubygems.org
455
- homepage_uri: https://shopify.github.io/shopify-app-cli/
456
- source_code_uri: https://github.com/Shopify/shopify-app-cli
457
- changelog_uri: https://github.com/Shopify/shopify-app-cli/blob/master/CHANGELOG.md
512
+ homepage_uri: https://shopify.github.io/shopify-cli/
513
+ source_code_uri: https://github.com/Shopify/shopify-cli
514
+ changelog_uri: https://github.com/Shopify/shopify-cli/blob/main/CHANGELOG.md
458
515
  post_install_message:
459
516
  rdoc_options: []
460
517
  require_paths:
@@ -464,14 +521,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
464
521
  requirements:
465
522
  - - ">="
466
523
  - !ruby/object:Gem::Version
467
- version: '2.5'
524
+ version: '2.6'
468
525
  required_rubygems_version: !ruby/object:Gem::Requirement
469
526
  requirements:
470
527
  - - ">="
471
528
  - !ruby/object:Gem::Version
472
529
  version: '0'
473
530
  requirements: []
474
- rubygems_version: 3.2.17
531
+ rubygems_version: 3.2.20
475
532
  signing_key:
476
533
  specification_version: 4
477
534
  summary: Shopify CLI helps you build Shopify apps faster.