shopify-cli 2.11.0 → 2.12.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +29 -1
- data/Gemfile.lock +1 -1
- data/bin/shopify +13 -0
- data/docs/users/installation.md +1 -44
- data/lib/project_types/extension/commands/build.rb +0 -3
- data/lib/project_types/extension/commands/check.rb +0 -1
- data/lib/project_types/extension/commands/create.rb +0 -1
- data/lib/project_types/extension/commands/push.rb +13 -1
- data/lib/project_types/extension/commands/serve.rb +0 -1
- data/lib/project_types/extension/loaders/project.rb +28 -8
- data/lib/project_types/extension/messages/messages.rb +10 -2
- data/lib/project_types/extension/models/specification_handlers/checkout_ui_extension.rb +114 -0
- data/lib/project_types/extension/models/specification_handlers/theme_app_extension.rb +7 -1
- data/lib/project_types/script/cli.rb +2 -0
- data/lib/project_types/script/commands/create.rb +2 -2
- data/lib/project_types/script/commands/push.rb +4 -6
- data/lib/project_types/script/config/extension_points.yml +0 -4
- data/lib/project_types/script/forms/create.rb +1 -14
- data/lib/project_types/script/layers/application/connect_app.rb +3 -2
- data/lib/project_types/script/layers/application/create_script.rb +1 -1
- data/lib/project_types/script/layers/application/push_script.rb +1 -1
- data/lib/project_types/script/layers/infrastructure/errors.rb +11 -0
- data/lib/project_types/script/layers/infrastructure/languages/assemblyscript_project_creator.rb +2 -6
- data/lib/project_types/script/layers/infrastructure/languages/assemblyscript_task_runner.rb +30 -26
- data/lib/project_types/script/layers/infrastructure/languages/task_runner.rb +35 -9
- data/lib/project_types/script/layers/infrastructure/languages/tool_version_checker.rb +26 -0
- data/lib/project_types/script/layers/infrastructure/languages/typescript_project_creator.rb +3 -6
- data/lib/project_types/script/layers/infrastructure/languages/typescript_task_runner.rb +31 -27
- data/lib/project_types/script/layers/infrastructure/languages/wasm_task_runner.rb +3 -7
- data/lib/project_types/script/loaders/project.rb +8 -7
- data/lib/project_types/script/messages/messages.rb +14 -13
- data/lib/project_types/script/ui/error_handler.rb +13 -0
- data/lib/project_types/theme/commands/check.rb +0 -1
- data/lib/project_types/theme/commands/common/root_helper.rb +65 -0
- data/lib/project_types/theme/commands/delete.rb +0 -1
- data/lib/project_types/theme/commands/init.rb +2 -1
- data/lib/project_types/theme/commands/language_server.rb +0 -1
- data/lib/project_types/theme/commands/package.rb +0 -1
- data/lib/project_types/theme/commands/publish.rb +0 -1
- data/lib/project_types/theme/commands/pull.rb +18 -9
- data/lib/project_types/theme/commands/push.rb +16 -11
- data/lib/project_types/theme/commands/serve.rb +6 -3
- data/lib/project_types/theme/conversions/base_glob.rb +50 -0
- data/lib/project_types/theme/conversions/ignore_glob.rb +15 -0
- data/lib/project_types/theme/conversions/include_glob.rb +15 -0
- data/lib/project_types/theme/messages/messages.rb +5 -5
- data/lib/shopify_cli/command.rb +11 -3
- data/lib/shopify_cli/commands/app/create/node.rb +1 -0
- data/lib/shopify_cli/commands/app/create/php.rb +1 -0
- data/lib/shopify_cli/commands/app/create/rails.rb +2 -1
- data/lib/shopify_cli/commands/app/create.rb +0 -3
- data/lib/shopify_cli/commands/app/deploy.rb +1 -1
- data/lib/shopify_cli/commands/app/serve.rb +0 -1
- data/lib/shopify_cli/constants.rb +2 -2
- data/lib/shopify_cli/environment.rb +45 -45
- data/lib/shopify_cli/git.rb +9 -1
- data/lib/shopify_cli/messages/messages.rb +23 -2
- data/lib/shopify_cli/tasks/ensure_git_dependency.rb +14 -0
- data/lib/shopify_cli/tasks.rb +1 -0
- data/lib/shopify_cli/theme/dev_server/hot_reload/remote_file_reloader.rb +63 -0
- data/lib/shopify_cli/theme/dev_server/hot_reload.rb +22 -6
- data/lib/shopify_cli/theme/dev_server/proxy.rb +18 -7
- data/lib/shopify_cli/theme/dev_server.rb +1 -3
- data/lib/shopify_cli/theme/development_theme.rb +11 -0
- data/lib/shopify_cli/theme/file.rb +4 -0
- data/lib/shopify_cli/theme/include_filter.rb +4 -2
- data/lib/shopify_cli/theme/syncer.rb +13 -4
- data/lib/shopify_cli/theme/theme.rb +0 -4
- data/lib/shopify_cli/version.rb +1 -1
- metadata +9 -2
@@ -3,7 +3,6 @@ require "net/http"
|
|
3
3
|
require "stringio"
|
4
4
|
require "time"
|
5
5
|
require "cgi"
|
6
|
-
|
7
6
|
require_relative "proxy/template_param_builder"
|
8
7
|
|
9
8
|
module ShopifyCLI
|
@@ -43,9 +42,8 @@ module ShopifyCLI
|
|
43
42
|
headers["Accept-Encoding"] = "none"
|
44
43
|
headers["User-Agent"] = "Shopify CLI"
|
45
44
|
|
46
|
-
query = URI.decode_www_form(env["QUERY_STRING"])
|
45
|
+
query = URI.decode_www_form(env["QUERY_STRING"])
|
47
46
|
replace_templates = build_replace_templates_param(env)
|
48
|
-
|
49
47
|
response = if replace_templates.any?
|
50
48
|
# Pass to SFR the recently modified templates in `replace_templates` body param
|
51
49
|
headers["Authorization"] = "Bearer #{bearer_token}"
|
@@ -71,13 +69,26 @@ module ShopifyCLI
|
|
71
69
|
@core_endpoints << env["PATH_INFO"]
|
72
70
|
end
|
73
71
|
|
74
|
-
body = response.body
|
72
|
+
body = patch_body(env, response.body)
|
75
73
|
body = [body] unless body.respond_to?(:each)
|
76
74
|
[response.code, headers, body]
|
77
75
|
end
|
78
76
|
|
79
77
|
private
|
80
78
|
|
79
|
+
def patch_body(env, body)
|
80
|
+
return [""] unless body
|
81
|
+
|
82
|
+
body.gsub(%r{(data-.+=(["']))(http:|https:)?//#{@theme.shop}(.*)(\2)}) do |_|
|
83
|
+
match = Regexp.last_match
|
84
|
+
"#{match[1]}http://#{host(env)}#{match[4]}#{match[5]}"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def host(env)
|
89
|
+
env["HTTP_HOST"]
|
90
|
+
end
|
91
|
+
|
81
92
|
def has_body?(headers)
|
82
93
|
headers["Content-Length"] || headers["Transfer-Encoding"]
|
83
94
|
end
|
@@ -158,7 +169,7 @@ module ShopifyCLI
|
|
158
169
|
def secure_session_id
|
159
170
|
if secure_session_id_expired?
|
160
171
|
@ctx.debug("Refreshing preview _secure_session_id cookie")
|
161
|
-
response = request("HEAD", "/", query:
|
172
|
+
response = request("HEAD", "/", query: [[:preview_theme_id, @theme.id]])
|
162
173
|
@secure_session_id = extract_secure_session_id_from_response_headers(response)
|
163
174
|
@last_session_cookie_refresh = Time.now
|
164
175
|
end
|
@@ -189,9 +200,9 @@ module ShopifyCLI
|
|
189
200
|
response_headers
|
190
201
|
end
|
191
202
|
|
192
|
-
def request(method, path, headers: nil, query:
|
203
|
+
def request(method, path, headers: nil, query: [], form_data: nil, body_stream: nil)
|
193
204
|
uri = URI.join("https://#{@theme.shop}", path)
|
194
|
-
uri.query = URI.encode_www_form(query
|
205
|
+
uri.query = URI.encode_www_form(query + [[:_fd, 0], [:pb, 0]])
|
195
206
|
|
196
207
|
@ctx.debug("Proxying #{method} #{uri}")
|
197
208
|
|
@@ -28,7 +28,7 @@ module ShopifyCLI
|
|
28
28
|
|
29
29
|
def start(ctx, root, host: "127.0.0.1", port: 9292, poll: false, mode: ReloadMode.default)
|
30
30
|
@ctx = ctx
|
31
|
-
theme = DevelopmentTheme.
|
31
|
+
theme = DevelopmentTheme.find_or_create!(ctx, root: root)
|
32
32
|
ignore_filter = IgnoreFilter.from_path(root)
|
33
33
|
@syncer = Syncer.new(ctx, theme: theme, ignore_filter: ignore_filter)
|
34
34
|
watcher = Watcher.new(ctx, theme: theme, syncer: @syncer, ignore_filter: ignore_filter, poll: poll)
|
@@ -41,8 +41,6 @@ module ShopifyCLI
|
|
41
41
|
stopped = false
|
42
42
|
address = "http://#{host}:#{port}"
|
43
43
|
|
44
|
-
theme.ensure_exists!
|
45
|
-
|
46
44
|
trap("INT") do
|
47
45
|
stopped = true
|
48
46
|
stop
|
@@ -38,6 +38,8 @@ module ShopifyCLI
|
|
38
38
|
@ctx.debug("Created temporary development theme: #{@id}")
|
39
39
|
ShopifyCLI::DB.set(development_theme_id: @id)
|
40
40
|
end
|
41
|
+
|
42
|
+
self
|
41
43
|
end
|
42
44
|
|
43
45
|
def exists?
|
@@ -63,6 +65,15 @@ module ShopifyCLI
|
|
63
65
|
new(ctx).delete
|
64
66
|
end
|
65
67
|
|
68
|
+
def self.find(ctx, root: nil)
|
69
|
+
dev_theme = new(ctx, root: root)
|
70
|
+
dev_theme.exists? ? dev_theme : nil
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.find_or_create!(ctx, root: nil)
|
74
|
+
new(ctx, root: root).ensure_exists!
|
75
|
+
end
|
76
|
+
|
66
77
|
private
|
67
78
|
|
68
79
|
def generate_theme_name
|
@@ -9,7 +9,8 @@ module ShopifyCLI
|
|
9
9
|
|
10
10
|
attr_reader :globs, :regexes
|
11
11
|
|
12
|
-
def initialize(patterns = [])
|
12
|
+
def initialize(root, patterns = [])
|
13
|
+
@root = Pathname.new(root)
|
13
14
|
@patterns = patterns.nil? ? [] : patterns.compact.reject(&:empty?)
|
14
15
|
|
15
16
|
regexes, globs = patterns_to_regexes_and_globs(@patterns)
|
@@ -22,9 +23,10 @@ module ShopifyCLI
|
|
22
23
|
return true unless present?(@patterns)
|
23
24
|
|
24
25
|
path = path.to_s
|
25
|
-
|
26
26
|
return true if path.empty?
|
27
27
|
|
28
|
+
path = @root.join(path).to_s
|
29
|
+
|
28
30
|
regexes.each do |regex|
|
29
31
|
return true if regex_match?(regex, path)
|
30
32
|
end
|
@@ -42,7 +42,7 @@ module ShopifyCLI
|
|
42
42
|
# Latest theme assets checksums. Updated on each upload.
|
43
43
|
@checksums = {}
|
44
44
|
|
45
|
-
# Checksums of assets with errors.
|
45
|
+
# Checksums of assets with errors.
|
46
46
|
@error_checksums = []
|
47
47
|
end
|
48
48
|
|
@@ -168,7 +168,7 @@ module ShopifyCLI
|
|
168
168
|
# Delete local files not present remotely
|
169
169
|
missing_files = @theme.theme_files
|
170
170
|
.reject { |file| checksums.key?(file.relative_path.to_s) }.uniq
|
171
|
-
.reject { |file|
|
171
|
+
.reject { |file| ignore_file?(file) }
|
172
172
|
missing_files.each do |file|
|
173
173
|
@ctx.debug("rm #{file.relative_path}")
|
174
174
|
file.delete
|
@@ -195,7 +195,7 @@ module ShopifyCLI
|
|
195
195
|
# Already enqueued
|
196
196
|
return if @pending.include?(operation)
|
197
197
|
|
198
|
-
if
|
198
|
+
if ignore_operation?(operation)
|
199
199
|
@ctx.debug("ignore #{operation.file_path}")
|
200
200
|
return
|
201
201
|
end
|
@@ -253,8 +253,17 @@ module ShopifyCLI
|
|
253
253
|
response
|
254
254
|
end
|
255
255
|
|
256
|
-
def
|
256
|
+
def ignore_operation?(operation)
|
257
257
|
path = operation.file_path
|
258
|
+
ignore_path?(path)
|
259
|
+
end
|
260
|
+
|
261
|
+
def ignore_file?(file)
|
262
|
+
path = file.path
|
263
|
+
ignore_path?(path)
|
264
|
+
end
|
265
|
+
|
266
|
+
def ignore_path?(path)
|
258
267
|
ignored_by_ignore_filter?(path) || ignored_by_include_filter?(path)
|
259
268
|
end
|
260
269
|
|
@@ -176,10 +176,6 @@ module ShopifyCLI
|
|
176
176
|
find(ctx, root) { |attrs| attrs["role"] == "main" }
|
177
177
|
end
|
178
178
|
|
179
|
-
def development(ctx, root: nil)
|
180
|
-
find(ctx, root) { |attrs| attrs["role"] == "development" }
|
181
|
-
end
|
182
|
-
|
183
179
|
# Finds a Theme by its identifier
|
184
180
|
#
|
185
181
|
# #### Parameters
|
data/lib/shopify_cli/version.rb
CHANGED
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: 2.
|
4
|
+
version: 2.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shopify
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-02-
|
11
|
+
date: 2022-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -317,6 +317,7 @@ files:
|
|
317
317
|
- lib/project_types/script/layers/infrastructure/languages/assemblyscript_task_runner.rb
|
318
318
|
- lib/project_types/script/layers/infrastructure/languages/project_creator.rb
|
319
319
|
- lib/project_types/script/layers/infrastructure/languages/task_runner.rb
|
320
|
+
- lib/project_types/script/layers/infrastructure/languages/tool_version_checker.rb
|
320
321
|
- lib/project_types/script/layers/infrastructure/languages/typescript_project_creator.rb
|
321
322
|
- lib/project_types/script/layers/infrastructure/languages/typescript_task_runner.rb
|
322
323
|
- lib/project_types/script/layers/infrastructure/languages/wasm_project_creator.rb
|
@@ -335,6 +336,7 @@ files:
|
|
335
336
|
- lib/project_types/script/ui/strict_spinner.rb
|
336
337
|
- lib/project_types/theme/cli.rb
|
337
338
|
- lib/project_types/theme/commands/check.rb
|
339
|
+
- lib/project_types/theme/commands/common/root_helper.rb
|
338
340
|
- lib/project_types/theme/commands/delete.rb
|
339
341
|
- lib/project_types/theme/commands/init.rb
|
340
342
|
- lib/project_types/theme/commands/language_server.rb
|
@@ -343,6 +345,9 @@ files:
|
|
343
345
|
- lib/project_types/theme/commands/pull.rb
|
344
346
|
- lib/project_types/theme/commands/push.rb
|
345
347
|
- lib/project_types/theme/commands/serve.rb
|
348
|
+
- lib/project_types/theme/conversions/base_glob.rb
|
349
|
+
- lib/project_types/theme/conversions/ignore_glob.rb
|
350
|
+
- lib/project_types/theme/conversions/include_glob.rb
|
346
351
|
- lib/project_types/theme/forms/confirm_store.rb
|
347
352
|
- lib/project_types/theme/forms/select.rb
|
348
353
|
- lib/project_types/theme/messages/messages.rb
|
@@ -459,6 +464,7 @@ files:
|
|
459
464
|
- lib/shopify_cli/tasks/ensure_authenticated.rb
|
460
465
|
- lib/shopify_cli/tasks/ensure_dev_store.rb
|
461
466
|
- lib/shopify_cli/tasks/ensure_env.rb
|
467
|
+
- lib/shopify_cli/tasks/ensure_git_dependency.rb
|
462
468
|
- lib/shopify_cli/tasks/ensure_loopback_url.rb
|
463
469
|
- lib/shopify_cli/tasks/ensure_project_type.rb
|
464
470
|
- lib/shopify_cli/tasks/select_org_and_shop.rb
|
@@ -469,6 +475,7 @@ files:
|
|
469
475
|
- lib/shopify_cli/theme/dev_server/header_hash.rb
|
470
476
|
- lib/shopify_cli/theme/dev_server/hot-reload.js
|
471
477
|
- lib/shopify_cli/theme/dev_server/hot_reload.rb
|
478
|
+
- lib/shopify_cli/theme/dev_server/hot_reload/remote_file_reloader.rb
|
472
479
|
- lib/shopify_cli/theme/dev_server/local_assets.rb
|
473
480
|
- lib/shopify_cli/theme/dev_server/proxy.rb
|
474
481
|
- lib/shopify_cli/theme/dev_server/proxy/template_param_builder.rb
|