shopify-cli 2.34.0 → 2.36.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 +20 -0
- data/Gemfile.lock +2 -2
- data/lib/project_types/extension/cli.rb +0 -1
- data/lib/project_types/extension/commands/serve.rb +10 -0
- data/lib/project_types/extension/models/specification_handlers/theme_app_extension.rb +1 -1
- data/lib/project_types/theme/commands/common/root_helper.rb +3 -2
- data/lib/project_types/theme/commands/pull.rb +6 -0
- data/lib/project_types/theme/commands/push.rb +7 -0
- data/lib/project_types/theme/commands/serve.rb +1 -0
- data/lib/project_types/theme/messages/messages.rb +4 -2
- data/lib/shopify_cli/commands/app.rb +0 -1
- data/lib/shopify_cli/messages/messages.rb +1 -1
- data/lib/shopify_cli/theme/dev_server/hot_reload/script_injector.rb +1 -1
- data/lib/shopify_cli/theme/dev_server/hot_reload.rb +9 -2
- data/lib/shopify_cli/theme/dev_server/local_assets.rb +8 -3
- data/lib/shopify_cli/theme/dev_server.rb +5 -1
- data/lib/shopify_cli/theme/extension/dev_server.rb +7 -4
- data/lib/shopify_cli/theme/extension/host_theme.rb +19 -14
- data/lib/shopify_cli/theme/syncer/standard_reporter.rb +2 -2
- data/lib/shopify_cli/theme/syncer.rb +1 -1
- data/lib/shopify_cli/version.rb +1 -1
- data/shopify-cli.gemspec +1 -1
- data/vendor/deps/smart_properties/lib/smart_properties/property.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ade7adf91cbeb9a2dd8a02b15189641ccefc1b936f6a7f1621018c6bbd9b6197
|
4
|
+
data.tar.gz: 2a260ea255710a59c3062189561a367a6a97738c4c29d8d2df4aae75d9a28ad0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8472b9e1cf6c57b9f469d75c1df4f8aaf4b6942746a6cb20b20b67853d8a7f64775f236074251fbb344d20e7befaee54334f85ad69f30fd1d381cebab2da7986
|
7
|
+
data.tar.gz: 29cb2ad9e92906a3e0cec7903d2ed1a072b81133a0a623492c9210a9795257648a768221c6955b3eaa302b949ee44ecf61a37b24cfaed165aae7b654a1625788
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,26 @@ From version 2.6.0, the sections in this file adhere to the [keep a changelog](h
|
|
2
2
|
|
3
3
|
## [Unreleased]
|
4
4
|
|
5
|
+
## Version 2.36.0 - 2023-05-03
|
6
|
+
|
7
|
+
### Fixed
|
8
|
+
* [#2735](https://github.com/Shopify/shopify-cli/pull/2735): Remove theme directory confirmation during tests and make confirmation dialogue respect `SHOPIFY_CLI_TTY` (from cli#1369)
|
9
|
+
* [#2737](https://github.com/Shopify/shopify-cli/pull/2737): Do not inject hot-reload code into web-pixels-manager sandbox (from cli#1568)
|
10
|
+
|
11
|
+
### Added
|
12
|
+
* [#2735](https://github.com/Shopify/shopify-cli/pull/2735): Pass development theme from CLI 3’s to CLI 2’s local storage (from cli#1410)
|
13
|
+
|
14
|
+
## Version 2.35.0 - 2023-02-22
|
15
|
+
|
16
|
+
### Fixed
|
17
|
+
* [#2721](https://github.com/Shopify/shopify-cli/pull/2721): Do not `replace_asset_urls` in font bodies
|
18
|
+
* [#2729](https://github.com/Shopify/shopify-cli/pull/2729): Do not inject hot-reload code into web-pixels-manager sandbox (from cli#1370)
|
19
|
+
* [#2731](https://github.com/Shopify/shopify-cli/pull/2731): The CLI should not report IO messages when the `--json` flag is passed
|
20
|
+
|
21
|
+
### Added
|
22
|
+
* [#2724](https://github.com/Shopify/shopify-cli/pull/2724): Introduce hidden `--overwrite-json` flag
|
23
|
+
* [#2729](https://github.com/Shopify/shopify-cli/pull/2729): Introduce hidden `--generate_tmp_theme` flag (from cli#1264)
|
24
|
+
|
5
25
|
## Version 2.34.0 - 2023-01-11
|
6
26
|
|
7
27
|
### Added
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
shopify-cli (2.
|
4
|
+
shopify-cli (2.36.0)
|
5
5
|
bugsnag (~> 6.22)
|
6
6
|
listen (~> 3.7.0)
|
7
7
|
theme-check (~> 1.14.0)
|
@@ -165,7 +165,7 @@ PLATFORMS
|
|
165
165
|
ruby
|
166
166
|
|
167
167
|
DEPENDENCIES
|
168
|
-
bundler (
|
168
|
+
bundler (>= 2.3.11)
|
169
169
|
byebug
|
170
170
|
colorize (~> 0.8.1)
|
171
171
|
cucumber (~> 7.0)
|
@@ -19,7 +19,6 @@ module Extension
|
|
19
19
|
class Command < ShopifyCLI::Command::ProjectCommand
|
20
20
|
autoload :ExtensionCommand, Project.project_filepath("commands/extension_command")
|
21
21
|
|
22
|
-
subcommand :Create, "create", Project.project_filepath("commands/create")
|
23
22
|
subcommand :Register, "register", Project.project_filepath("commands/register")
|
24
23
|
subcommand :Info, "info", Project.project_filepath("commands/info")
|
25
24
|
subcommand :Connect, "connect", Project.project_filepath("commands/connect")
|
@@ -20,6 +20,9 @@ module Extension
|
|
20
20
|
parser.on("-T", "--theme=NAME_OR_ID", "Theme ID or name of the theme app extension host theme.") do |theme|
|
21
21
|
flags[:theme] = theme
|
22
22
|
end
|
23
|
+
parser.on("--generate-tmp-theme", "Populate host theme, created by CLI 3, with assets") do |generate_tmp_theme|
|
24
|
+
flags[:generate_tmp_theme] = generate_tmp_theme
|
25
|
+
end
|
23
26
|
parser.on("--api-key=API_KEY", "Connect your extension and app by inserting your app's API key") do |api_key|
|
24
27
|
flags[:api_key] = api_key.gsub('"', "")
|
25
28
|
end
|
@@ -45,6 +48,7 @@ module Extension
|
|
45
48
|
property! :tunnel_requested, accepts: [true, false], reader: :tunnel_requested?, default: true
|
46
49
|
property :port, accepts: (1...(2**16))
|
47
50
|
property :theme, accepts: String, default: nil
|
51
|
+
property :generate_tmp_theme, accepts: [true, false], reader: :generate_tmp_theme?, default: false
|
48
52
|
property :api_key, accepts: String, default: nil
|
49
53
|
property :api_secret, accepts: String, default: nil
|
50
54
|
property :registration_id, accepts: String, default: nil
|
@@ -60,6 +64,7 @@ module Extension
|
|
60
64
|
resource_url: options.flags[:resource_url],
|
61
65
|
port: options.flags[:port],
|
62
66
|
theme: options.flags[:theme],
|
67
|
+
generate_tmp_theme: generate_tmp_theme?,
|
63
68
|
api_key: options.flags[:api_key],
|
64
69
|
api_secret: options.flags[:api_secret],
|
65
70
|
registration_id: options.flags[:registration_id],
|
@@ -103,6 +108,10 @@ module Extension
|
|
103
108
|
tunnel.nil? || !!tunnel
|
104
109
|
end
|
105
110
|
|
111
|
+
def generate_tmp_theme?
|
112
|
+
options.flags[:generate_tmp_theme] == true
|
113
|
+
end
|
114
|
+
|
106
115
|
def find_available_port(runtime_configuration)
|
107
116
|
return runtime_configuration unless runtime_configuration.port.nil?
|
108
117
|
return runtime_configuration unless specification_handler.choose_port?(@ctx)
|
@@ -137,6 +146,7 @@ module Extension
|
|
137
146
|
tunnel_url: runtime_configuration.tunnel_url,
|
138
147
|
port: runtime_configuration.port,
|
139
148
|
theme: runtime_configuration.theme,
|
149
|
+
generate_tmp_theme: runtime_configuration.generate_tmp_theme?,
|
140
150
|
api_key: runtime_configuration.api_key,
|
141
151
|
api_secret: runtime_configuration.api_secret,
|
142
152
|
registration_id: runtime_configuration.registration_id,
|
@@ -49,13 +49,14 @@ module Theme
|
|
49
49
|
private
|
50
50
|
|
51
51
|
def current_directory_confirmed?
|
52
|
-
|
52
|
+
return true if options.flags[:force]
|
53
53
|
|
54
|
+
@ctx.warn(@ctx.message("theme.current_directory_is_not_theme_directory"))
|
54
55
|
Forms::ConfirmStore.ask(
|
55
56
|
@ctx,
|
56
57
|
[],
|
57
58
|
title: @ctx.message("theme.confirm_current_directory"),
|
58
|
-
force:
|
59
|
+
force: !ShopifyCLI::Environment.interactive?,
|
59
60
|
).confirmed?
|
60
61
|
end
|
61
62
|
|
@@ -35,12 +35,18 @@ module Theme
|
|
35
35
|
flags[:ignores] |= pattern
|
36
36
|
end
|
37
37
|
parser.on("-f", "--force") { flags[:force] = true }
|
38
|
+
parser.on("--development-theme-id=DEVELOPMENT_THEME_ID") do |development_theme_id|
|
39
|
+
flags[:development_theme_id] = development_theme_id.to_i
|
40
|
+
end
|
38
41
|
end
|
39
42
|
|
40
43
|
def call(_args, name)
|
41
44
|
root = root_value(options, name)
|
42
45
|
return if exist_and_not_empty?(root) && !valid_theme_directory?(root)
|
43
46
|
|
47
|
+
development_theme_id = options.flags[:development_theme_id]
|
48
|
+
ShopifyCLI::DB.set(development_theme_id: development_theme_id) unless development_theme_id.nil?
|
49
|
+
|
44
50
|
delete = !options.flags[:nodelete]
|
45
51
|
theme = find_theme(root, **options.flags)
|
46
52
|
return if theme.nil?
|
@@ -40,12 +40,18 @@ module Theme
|
|
40
40
|
flags[:ignores] |= pattern
|
41
41
|
end
|
42
42
|
parser.on("-f", "--force") { flags[:force] = true }
|
43
|
+
parser.on("--development-theme-id=DEVELOPMENT_THEME_ID") do |development_theme_id|
|
44
|
+
flags[:development_theme_id] = development_theme_id.to_i
|
45
|
+
end
|
43
46
|
end
|
44
47
|
|
45
48
|
def call(_args, name)
|
46
49
|
root = root_value(options, name)
|
47
50
|
return unless valid_theme_directory?(root)
|
48
51
|
|
52
|
+
development_theme_id = options.flags[:development_theme_id]
|
53
|
+
ShopifyCLI::DB.set(development_theme_id: development_theme_id) unless development_theme_id.nil?
|
54
|
+
|
49
55
|
delete = !options.flags[:nodelete]
|
50
56
|
theme = find_theme(root, **options.flags)
|
51
57
|
return if theme.nil?
|
@@ -67,6 +73,7 @@ module Theme
|
|
67
73
|
begin
|
68
74
|
syncer.start_threads
|
69
75
|
if options.flags[:json]
|
76
|
+
syncer.standard_reporter.disable!
|
70
77
|
syncer.upload_theme!(delete: delete)
|
71
78
|
else
|
72
79
|
CLI::UI::Frame.open(@ctx.message("theme.push.info.pushing", theme.name, theme.id, theme.shop)) do
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Theme
|
3
4
|
module Messages
|
4
5
|
MESSAGES = {
|
@@ -18,8 +19,9 @@ module Theme
|
|
18
19
|
ENSURE_USER
|
19
20
|
stable_flag_suggestion: "If the current command isn't working as expected," \
|
20
21
|
" we suggest re-running the command with the {{command: --stable}} flag",
|
21
|
-
|
22
|
-
"
|
22
|
+
current_directory_is_not_theme_directory: "It doesn’t seem like you’re running this command" \
|
23
|
+
" in a theme directory.",
|
24
|
+
confirm_current_directory: "Are you sure you want to proceed?",
|
23
25
|
init: {
|
24
26
|
help: <<~HELP,
|
25
27
|
{{command:%s theme init}}: Clones a Git repository to use as a starting point for building a new theme.
|
@@ -4,7 +4,6 @@ module ShopifyCLI
|
|
4
4
|
module Commands
|
5
5
|
class App < ShopifyCLI::Command
|
6
6
|
subcommand :Connect, "connect", "shopify_cli/commands/app/connect"
|
7
|
-
subcommand :Create, "create", "shopify_cli/commands/app/create"
|
8
7
|
subcommand :Deploy, "deploy", "shopify_cli/commands/app/deploy"
|
9
8
|
subcommand :Open, "open", "shopify_cli/commands/app/open"
|
10
9
|
subcommand :Serve, "serve", "shopify_cli/commands/app/serve"
|
@@ -313,7 +313,7 @@ module ShopifyCLI
|
|
313
313
|
},
|
314
314
|
error_reporting: {
|
315
315
|
unhandled_error: {
|
316
|
-
message: "{{x}} {{red:An unexpected error
|
316
|
+
message: "{{x}} {{red:An unexpected error occurred.}}",
|
317
317
|
issue_message: "{{red:\tTo \e]8;;%s\e\\submit an issue\e]8;;\e\\"\
|
318
318
|
" include the stack trace.}}",
|
319
319
|
stacktrace_message: "{{red:\tTo print the stack trace, add the environment variable %s.}}",
|
@@ -16,12 +16,15 @@ module ShopifyCLI
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def call(env)
|
19
|
-
|
19
|
+
path = env["PATH_INFO"]
|
20
|
+
if path == "/hot-reload"
|
20
21
|
create_stream
|
21
22
|
else
|
22
23
|
status, headers, body = @app.call(env)
|
23
24
|
|
24
|
-
|
25
|
+
if request_is_html?(headers) && leads_to_injectable_body?(path)
|
26
|
+
body = inject_hot_reload_javascript(body)
|
27
|
+
end
|
25
28
|
|
26
29
|
[status, headers, body]
|
27
30
|
end
|
@@ -43,6 +46,10 @@ module ShopifyCLI
|
|
43
46
|
headers["content-type"]&.start_with?("text/html")
|
44
47
|
end
|
45
48
|
|
49
|
+
def leads_to_injectable_body?(path)
|
50
|
+
path !~ /.+\/sandbox/
|
51
|
+
end
|
52
|
+
|
46
53
|
def inject_hot_reload_javascript(body)
|
47
54
|
@script_injector&.inject(body: body, dir: __dir__, mode: @mode)
|
48
55
|
end
|
@@ -29,13 +29,14 @@ module ShopifyCLI
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def call(env)
|
32
|
-
|
32
|
+
path_info = env["PATH_INFO"]
|
33
|
+
if path_info.start_with?("/assets")
|
33
34
|
# Serve from disk
|
34
|
-
serve_file(
|
35
|
+
serve_file(path_info)
|
35
36
|
else
|
36
37
|
# Proxy the request, and replace the URLs in the response
|
37
38
|
status, headers, body = @app.call(env)
|
38
|
-
body = replace_asset_urls(body)
|
39
|
+
body = replace_asset_urls(body) unless path_info.start_with?("/fonts")
|
39
40
|
[status, headers, body]
|
40
41
|
end
|
41
42
|
end
|
@@ -53,6 +54,10 @@ module ShopifyCLI
|
|
53
54
|
end
|
54
55
|
|
55
56
|
[replaced_body]
|
57
|
+
rescue ArgumentError => error
|
58
|
+
return [body.join] if error.message.include?("invalid byte sequence")
|
59
|
+
|
60
|
+
raise error
|
56
61
|
end
|
57
62
|
|
58
63
|
def serve_fail(status, body)
|
@@ -41,6 +41,7 @@ module ShopifyCLI
|
|
41
41
|
port: 9292,
|
42
42
|
poll: false,
|
43
43
|
editor_sync: false,
|
44
|
+
overwrite_json: false,
|
44
45
|
stable: false,
|
45
46
|
mode: ReloadMode.default,
|
46
47
|
includes: nil,
|
@@ -55,6 +56,7 @@ module ShopifyCLI
|
|
55
56
|
port,
|
56
57
|
poll,
|
57
58
|
editor_sync,
|
59
|
+
overwrite_json,
|
58
60
|
stable,
|
59
61
|
mode,
|
60
62
|
includes,
|
@@ -78,6 +80,7 @@ module ShopifyCLI
|
|
78
80
|
port,
|
79
81
|
poll,
|
80
82
|
editor_sync,
|
83
|
+
overwrite_json,
|
81
84
|
stable,
|
82
85
|
mode,
|
83
86
|
includes,
|
@@ -91,6 +94,7 @@ module ShopifyCLI
|
|
91
94
|
@port = port
|
92
95
|
@poll = poll
|
93
96
|
@editor_sync = editor_sync
|
97
|
+
@overwrite_json = overwrite_json
|
94
98
|
@stable = stable
|
95
99
|
@mode = mode
|
96
100
|
@includes = includes
|
@@ -199,7 +203,7 @@ module ShopifyCLI
|
|
199
203
|
theme: theme,
|
200
204
|
include_filter: include_filter,
|
201
205
|
ignore_filter: ignore_filter,
|
202
|
-
overwrite_json: !editor_sync,
|
206
|
+
overwrite_json: !editor_sync || @overwrite_json,
|
203
207
|
stable: stable
|
204
208
|
)
|
205
209
|
end
|
@@ -26,12 +26,13 @@ module ShopifyCLI
|
|
26
26
|
# Extensions
|
27
27
|
ScriptInjector = ShopifyCLI::Theme::Extension::DevServer::HotReload::ScriptInjector
|
28
28
|
|
29
|
-
attr_accessor :project, :specification_handler
|
29
|
+
attr_accessor :project, :specification_handler, :generate_tmp_theme
|
30
30
|
|
31
31
|
class << self
|
32
|
-
def start(ctx, root, port: 9292, theme: nil, project:, specification_handler:)
|
32
|
+
def start(ctx, root, port: 9292, theme: nil, generate_tmp_theme: false, project:, specification_handler:)
|
33
33
|
instance.project = project
|
34
34
|
instance.specification_handler = specification_handler
|
35
|
+
instance.generate_tmp_theme = generate_tmp_theme
|
35
36
|
|
36
37
|
super(ctx, root, port: port, theme: theme)
|
37
38
|
end
|
@@ -66,8 +67,10 @@ module ShopifyCLI
|
|
66
67
|
|
67
68
|
def theme
|
68
69
|
@theme ||= if theme_identifier
|
69
|
-
theme =
|
70
|
-
|
70
|
+
theme = HostTheme.find_by_identifier(ctx, identifier: theme_identifier)
|
71
|
+
ctx.abort(not_found_error_message) unless theme
|
72
|
+
theme.generate_tmp_theme if generate_tmp_theme
|
73
|
+
theme
|
71
74
|
else
|
72
75
|
HostTheme.find_or_create!(ctx)
|
73
76
|
end
|
@@ -61,20 +61,9 @@ module ShopifyCLI
|
|
61
61
|
new(ctx, root: nil).ensure_exists!
|
62
62
|
end
|
63
63
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
hostname = Socket.gethostname.split(".").shift
|
68
|
-
hash = SecureRandom.hex(3)
|
69
|
-
|
70
|
-
theme_name = "App Ext. Host ()"
|
71
|
-
hostname_character_limit = API_NAME_LIMIT - theme_name.length - hash.length - 1
|
72
|
-
identifier = encode_identifier("#{hash}-#{hostname[0, hostname_character_limit]}")
|
73
|
-
theme_name = "App Ext. Host (#{identifier})"
|
74
|
-
|
75
|
-
ShopifyCLI::DB.set(host_theme_name: theme_name)
|
76
|
-
|
77
|
-
theme_name
|
64
|
+
def self.find_by_identifier(ctx, root: nil, identifier:)
|
65
|
+
ShopifyCLI::DB.set(host_theme_id: identifier)
|
66
|
+
find(ctx, root: root)
|
78
67
|
end
|
79
68
|
|
80
69
|
def generate_tmp_theme
|
@@ -98,6 +87,22 @@ module ShopifyCLI
|
|
98
87
|
end
|
99
88
|
end
|
100
89
|
end
|
90
|
+
|
91
|
+
private
|
92
|
+
|
93
|
+
def generate_host_theme_name
|
94
|
+
hostname = Socket.gethostname.split(".").shift
|
95
|
+
hash = SecureRandom.hex(3)
|
96
|
+
|
97
|
+
theme_name = "App Ext. Host ()"
|
98
|
+
hostname_character_limit = API_NAME_LIMIT - theme_name.length - hash.length - 1
|
99
|
+
identifier = encode_identifier("#{hash}-#{hostname[0, hostname_character_limit]}")
|
100
|
+
theme_name = "App Ext. Host (#{identifier})"
|
101
|
+
|
102
|
+
ShopifyCLI::DB.set(host_theme_name: theme_name)
|
103
|
+
|
104
|
+
theme_name
|
105
|
+
end
|
101
106
|
end
|
102
107
|
end
|
103
108
|
end
|
@@ -5,7 +5,7 @@ module ShopifyCLI
|
|
5
5
|
class Syncer
|
6
6
|
##
|
7
7
|
# ShopifyCLI::Theme::Syncer::StdReporter allows disabling/enabling
|
8
|
-
# messages reported in the standard output (ShopifyCLI::Context#puts).
|
8
|
+
# messages reported in the standard error output (ShopifyCLI::Context#puts).
|
9
9
|
#
|
10
10
|
class StandardReporter
|
11
11
|
attr_reader :ctx
|
@@ -24,7 +24,7 @@ module ShopifyCLI
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def report(message)
|
27
|
-
ctx.
|
27
|
+
ctx.error(message) if @enabled
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
@@ -33,7 +33,7 @@ module ShopifyCLI
|
|
33
33
|
:union_merge, # - Union merges the local file content with the remote file content
|
34
34
|
]
|
35
35
|
|
36
|
-
attr_reader :ctx, :theme, :checksums, :error_checksums, :api_client, :pending
|
36
|
+
attr_reader :ctx, :theme, :checksums, :error_checksums, :api_client, :pending, :standard_reporter
|
37
37
|
attr_accessor :include_filter, :ignore_filter
|
38
38
|
|
39
39
|
def_delegators :@error_reporter, :has_any_error?
|
data/lib/shopify_cli/version.rb
CHANGED
data/shopify-cli.gemspec
CHANGED
@@ -35,7 +35,7 @@ Gem::Specification.new do |spec|
|
|
35
35
|
spec.require_paths = ["lib", "vendor"]
|
36
36
|
spec.executables << "shopify"
|
37
37
|
|
38
|
-
spec.add_development_dependency("bundler", "
|
38
|
+
spec.add_development_dependency("bundler", ">= 2.3.11")
|
39
39
|
spec.add_development_dependency("rake", "~> 12.3", ">= 12.3.3")
|
40
40
|
spec.add_development_dependency("minitest", "~> 5.0")
|
41
41
|
|
@@ -157,7 +157,7 @@ module SmartProperties
|
|
157
157
|
rescue NoMethodError => error
|
158
158
|
# BasicObject does not respond to #nil? by default, so we need to double
|
159
159
|
# check if somebody implemented it and it fails internally or if the
|
160
|
-
# error
|
160
|
+
# error occurred because the method is actually not present. In the former
|
161
161
|
# case, we want to raise the exception because there is something wrong
|
162
162
|
# with the implementation of object#nil?. In the latter case we treat the
|
163
163
|
# object as truthy because we don't know better.
|
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shopify-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.36.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shopify
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 2.3.11
|
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
26
|
version: 2.3.11
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -690,7 +690,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
690
690
|
- !ruby/object:Gem::Version
|
691
691
|
version: '0'
|
692
692
|
requirements: []
|
693
|
-
rubygems_version: 3.
|
693
|
+
rubygems_version: 3.4.12
|
694
694
|
signing_key:
|
695
695
|
specification_version: 4
|
696
696
|
summary: Shopify CLI helps you build Shopify apps faster.
|