30 lines
1.1 KiB
Plaintext
Executable File
30 lines
1.1 KiB
Plaintext
Executable File
#!/usr/bin/env -S jq -f
|
|
|
|
def extract_fields: {
|
|
pname : .Package,
|
|
version : .Version,
|
|
provides : .Package | sub("[0-9.-]*$"; ""),
|
|
filename : .Filename,
|
|
size : ."Installed-Size" | tonumber,
|
|
sha256 : .SHA256,
|
|
dependencies : .Depends,
|
|
} ;
|
|
|
|
# parses dependencies into a list of [{.pname, .kind, .version}]
|
|
# some dependencies do not have a version specified, in which case, kind = version = null
|
|
#
|
|
# example dependencies:
|
|
# intel-oneapi-common-vars (>= 2023.0.0-25325), intel-oneapi-common-licensing-2023.0.0
|
|
|
|
def split_dependencies : map(try(.dependencies |= split(",\\s?"; "")) // .dependencies |= []) ;
|
|
|
|
def match_version : capture("(?<pname>[a-zA-Z0-9_\\-.]*) *(\\((?<kind>[<>=]*) *(?<version>.*)\\))?"; "") ;
|
|
|
|
def parse_dependencies : map_values(.dependencies.[] |= match_version) ;
|
|
|
|
def sort_version_decreasing : sort_by(.version | split("[-.]"; "") | map(tonumber)) | reverse ;
|
|
|
|
map(extract_fields) | split_dependencies | parse_dependencies | sort_version_decreasing
|
|
|
|
# [.[] | select(.pname == "intel-hpckit") | .version]
|