github_packages: use json_schemer gem.
Instead of the deprecated json-schema.
This commit is contained in:
parent
86130efd58
commit
5f31ebd8d4
6
.gitignore
vendored
6
.gitignore
vendored
@ -84,7 +84,6 @@
|
||||
**/vendor/bundle/ruby/*/gems/thread_safe-*/lib/thread_safe/util
|
||||
|
||||
# Ignore dependencies we don't wish to vendor
|
||||
**/vendor/bundle/ruby/*/gems/addressable-*/
|
||||
**/vendor/bundle/ruby/*/gems/ast-*/
|
||||
**/vendor/bundle/ruby/*/gems/bootsnap-*/
|
||||
**/vendor/bundle/ruby/*/gems/bundler-*/
|
||||
@ -97,11 +96,14 @@
|
||||
**/vendor/bundle/ruby/*/gems/diff-lcs-*/
|
||||
**/vendor/bundle/ruby/*/gems/docile-*/
|
||||
**/vendor/bundle/ruby/*/gems/domain_name-*/
|
||||
**/vendor/bundle/ruby/*/gems/ecma-re-validator-*/
|
||||
**/vendor/bundle/ruby/*/gems/hana-*/
|
||||
**/vendor/bundle/ruby/*/gems/highline-*/
|
||||
**/vendor/bundle/ruby/*/gems/http-cookie-*/
|
||||
**/vendor/bundle/ruby/*/gems/hpricot-*/
|
||||
**/vendor/bundle/ruby/*/gems/jaro_winkler-*/
|
||||
**/vendor/bundle/ruby/*/gems/json-*/
|
||||
**/vendor/bundle/ruby/*/gems/json_schemer-*/
|
||||
**/vendor/bundle/ruby/*/gems/method_source-*/
|
||||
**/vendor/bundle/ruby/*/gems/mime-types-data-*/
|
||||
**/vendor/bundle/ruby/*/gems/mime-types-*/
|
||||
@ -120,7 +122,6 @@
|
||||
**/vendor/bundle/ruby/*/gems/powerpack-*/
|
||||
**/vendor/bundle/ruby/*/gems/psych-*/
|
||||
**/vendor/bundle/ruby/*/gems/pry-*/
|
||||
**/vendor/bundle/ruby/*/gems/public_suffix-*/
|
||||
**/vendor/bundle/ruby/*/gems/racc-*/
|
||||
**/vendor/bundle/ruby/*/gems/rainbow-*/
|
||||
**/vendor/bundle/ruby/*/gems/rdiscount-*/
|
||||
@ -152,6 +153,7 @@
|
||||
**/vendor/bundle/ruby/*/gems/unf_ext-*/
|
||||
**/vendor/bundle/ruby/*/gems/unf-*/
|
||||
**/vendor/bundle/ruby/*/gems/unicode-display_width-*/
|
||||
**/vendor/bundle/ruby/*/gems/uri_template-*/
|
||||
**/vendor/bundle/ruby/*/gems/webrobots-*/
|
||||
|
||||
# Ignore `bin` contents (again).
|
||||
|
||||
@ -46,10 +46,8 @@ class GitHubPackages
|
||||
end
|
||||
|
||||
# TODO: these dependencies are installed but cannot be required automatically.
|
||||
Homebrew.install_gem!("public_suffix")
|
||||
Homebrew.install_gem!("addressable")
|
||||
Homebrew.install_gem!("json-schema")
|
||||
require "json-schema"
|
||||
Homebrew.install_gem!("json_schemer")
|
||||
require "json_schemer"
|
||||
|
||||
load_schemas!
|
||||
|
||||
@ -97,13 +95,30 @@ class GitHubPackages
|
||||
out, = curl_output(url)
|
||||
json = JSON.parse(out)
|
||||
|
||||
@schema_json ||= {}
|
||||
Array(uris).each do |uri|
|
||||
schema = JSON::Schema.new(json, uri)
|
||||
schema.uri = uri
|
||||
JSON::Validator.add_schema(schema)
|
||||
@schema_json[uri] = json
|
||||
end
|
||||
end
|
||||
|
||||
def schema_resolver(uri)
|
||||
@schema_json[uri.to_s.gsub(/#.*/, "")]
|
||||
end
|
||||
|
||||
def validate_schema!(schema_uri, json)
|
||||
schema = JSONSchemer.schema(@schema_json[schema_uri], ref_resolver: method(:schema_resolver))
|
||||
json = json.deep_stringify_keys
|
||||
return if schema.valid?(json)
|
||||
|
||||
puts
|
||||
ofail "#{Formatter.url(schema_uri)} JSON schema validation failed!"
|
||||
oh1 "Errors"
|
||||
pp schema.validate(json).to_a
|
||||
oh1 "JSON"
|
||||
pp json
|
||||
exit 1
|
||||
end
|
||||
|
||||
def upload_bottle(user, token, skopeo, formula_name, bottle_hash)
|
||||
_, org, repo, = *bottle_hash["bottle"]["root_url"].match(URL_REGEX)
|
||||
|
||||
@ -217,7 +232,7 @@ class GitHubPackages
|
||||
}],
|
||||
annotations: annotations_hash,
|
||||
}
|
||||
JSON::Validator.validate!(IMAGE_MANIFEST_SCHEMA_URI, image_manifest)
|
||||
validate_schema!(IMAGE_MANIFEST_SCHEMA_URI, image_manifest)
|
||||
manifest_json_sha256, manifest_json_size = write_hash(blobs, image_manifest)
|
||||
|
||||
{
|
||||
@ -244,7 +259,7 @@ class GitHubPackages
|
||||
|
||||
def write_image_layout(root)
|
||||
image_layout = { imageLayoutVersion: "1.0.0" }
|
||||
JSON::Validator.validate!(IMAGE_LAYOUT_SCHEMA_URI, image_layout)
|
||||
validate_schema!(IMAGE_LAYOUT_SCHEMA_URI, image_layout)
|
||||
write_hash(root, image_layout, "oci-layout")
|
||||
end
|
||||
|
||||
@ -262,7 +277,7 @@ class GitHubPackages
|
||||
diff_ids: ["sha256:#{tar_sha256}"],
|
||||
},
|
||||
})
|
||||
JSON::Validator.validate!(IMAGE_CONFIG_SCHEMA_URI, image_config)
|
||||
validate_schema!(IMAGE_CONFIG_SCHEMA_URI, image_config)
|
||||
write_hash(blobs, image_config)
|
||||
end
|
||||
|
||||
@ -272,7 +287,7 @@ class GitHubPackages
|
||||
manifests: manifests,
|
||||
annotations: {},
|
||||
}
|
||||
JSON::Validator.validate!(IMAGE_INDEX_SCHEMA_URI, image_index)
|
||||
validate_schema!(IMAGE_INDEX_SCHEMA_URI, image_index)
|
||||
write_hash(blobs, image_index)
|
||||
end
|
||||
|
||||
@ -287,7 +302,7 @@ class GitHubPackages
|
||||
}],
|
||||
annotations: {},
|
||||
}
|
||||
JSON::Validator.validate!(IMAGE_INDEX_SCHEMA_URI, index_json)
|
||||
validate_schema!(IMAGE_INDEX_SCHEMA_URI, index_json)
|
||||
write_hash(root, index_json, "index.json")
|
||||
end
|
||||
|
||||
|
||||
@ -4,8 +4,7 @@
|
||||
# typed: strong
|
||||
module ::StackProf; end
|
||||
module DependencyCollector::Compat; end
|
||||
module JSON::Schema; end
|
||||
module JSON::Validator; end
|
||||
module GitHubPackages::JSONSchemer; end
|
||||
module OS::Mac::Version::NULL; end
|
||||
module T::InterfaceWrapper::Helpers; end
|
||||
module T::Private::Abstract::Hooks; end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user