linuxPackages_latest.prl-tools: use libxml2 to parse html in update script

This commit is contained in:
codgician 2024-10-25 13:17:49 +08:00
parent 478d963e3c
commit 888a7effec
No known key found for this signature in database

View File

@ -1,5 +1,5 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl jq
#!nix-shell -i bash -p curl jq libxml2
set -eu -o pipefail
@ -11,13 +11,15 @@ path="$nixpkgs/pkgs/os-specific/linux/prl-tools/default.nix"
kb_url="https://kb.parallels.com/en/130212"
content="$(curl -s "$kb_url")"
# Match latest version from Parallels knowledge base
regex='<meta property="og:description" content="[^"]*Parallels Desktop[\ 0-9]*for Mac ([0-9]+\.[0-9]+\.[0-9+]) \(([0-9]+)\)[^"]*" />'
if [[ $content =~ $regex ]]; then
# Parse HTML content and retrieve og:description for header metadata
description=$(echo "$content" | xmllint --recover --html --xpath 'string(//meta[@property="og:description"]/@content)' - 2>/dev/null)
regex='[^0-9]+([0-9]+\.[0-9]+\.[0-9]+)[^\(]+\(([0-9]+)\)'
if [[ $description =~ $regex ]]; then
version="${BASH_REMATCH[1]}-${BASH_REMATCH[2]}"
echo "Found latest version: $version"
else
echo "Failed to extract version from $kb_url" >&2
echo "Retrived description: $description" >&2
exit 1
fi