shopify-cli 2.11.0 → 2.12.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|