Merge pull request #14503 from Rylan12/artifact-json-fix

Don't convert boolean and blank values to strings in cask artifacts API
This commit is contained in:
Rylan Polster 2023-02-05 15:40:14 +01:00 committed by GitHub
commit 0229196ac5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 8 deletions

View File

@ -295,16 +295,24 @@ module Cask
def artifacts_list
artifacts.map do |artifact|
next artifact.to_h if artifact.is_a? Artifact::AbstractFlightBlock
{ artifact.class.dsl_key => to_h_gsubs(artifact.to_args) }
case artifact
when Artifact::AbstractFlightBlock
artifact.to_h
when Artifact::Relocated
# Don't replace the Homebrew prefix in the source path since the source could include /usr/local
source, *args = artifact.to_args
{ artifact.class.dsl_key => [to_h_string_gsubs(source, replace_prefix: false), *to_h_gsubs(args)] }
else
{ artifact.class.dsl_key => to_h_gsubs(artifact.to_args) }
end
end
end
def to_h_string_gsubs(string)
string.to_s
.gsub(Dir.home, "$HOME")
.gsub(HOMEBREW_PREFIX, "$(brew --prefix)")
def to_h_string_gsubs(string, replace_prefix: true)
string = string.to_s.gsub(Dir.home, "$HOME")
return string unless replace_prefix
string.gsub(HOMEBREW_PREFIX, "$(brew --prefix)")
end
def to_h_array_gsubs(array)
@ -322,10 +330,14 @@ module Cask
end
def to_h_gsubs(value)
return value if value.blank?
if value.respond_to? :to_h
to_h_hash_gsubs(value)
elsif value.respond_to? :to_a
to_h_array_gsubs(value)
elsif [true, false].include? value
value
else
to_h_string_gsubs(value)
end

View File

@ -328,12 +328,14 @@ module Cask
end
def from_h_gsubs(value)
return value if value.blank?
if value.respond_to? :to_h
from_h_hash_gsubs(value)
elsif value.respond_to? :to_a
from_h_array_gsubs(value)
else
from_h_string_gsubs(value)
{ "true" => true, "false" => false }.fetch(value, from_h_string_gsubs(value))
end
end
end