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, version = 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]
 |