|
- BEGIN {
- vmroot = "https://download.freebsd.org/ftp/snapshots/VM-IMAGES/"
- isoroot = "https://download.freebsd.org/ftp/snapshots/ISO-IMAGES/"
- }
-
- tolower($1) == "message-id:" {
- MID=$2
- sub(".*<", "", MID)
- sub(">.*", "", MID)
- }
-
- $0 == "== ISO CHECKSUMS ==" {
- root = isoroot
- type = "iso"
- }
-
- $0 == "== VM IMAGE CHECKSUMS ==" {
- root = vmroot
- type = "vm"
- }
-
- function isdate(date) {
- m = match(date, "[0-9]+")
- if (m && RLENGTH == 8)
- return 1
-
- return 0
- }
-
- #FreeBSD-13.0-CURRENT-powerpc-powerpcspe-20181026-r339752-bootonly.iso
- #FreeBSD-13.0-CURRENT-sparc64-20181026-r339752-bootonly.iso.asc
- #FreeBSD-13.0-CURRENT-arm64-aarch64-PINE64-LTS-20181026-r339752.img.xz
- #FreeBSD-13.0-CURRENT-i386-20181026-r339752.vmdk.xz
-
- $1 == "SHA512" {
- # Strip parens
- fname = substr($2, 2, length($2) - 2)
-
- split(fname, dotparts, ".")
-
- # recombine around version string, strips of ALL extensions (including vm type)
- basename = dotparts[1] "." dotparts[2]
-
- cnt = split(basename, parts, "-")
-
- # make arch part, may include additional part
- arch = parts[4]
- basearch = arch
- if (parts[4] == "arm" || (parts[4] == "powerpc" && parts[5] == "powerpcspe") || parts[4] == "arm64") {
- basearch = parts[5]
- arch = parts[4] "-" parts[5]
- nextidx = 6
- } else
- nextidx = 5
-
- # find date, may be platform first
- if (isdate(parts[nextidx])) {
- platform = "xxx"
- date = parts[nextidx]
- nextidx += 1
- } else {
- platform = parts[nextidx]
- date = parts[nextidx + 1]
- if (isdate(date)) {
- nextidx += 2
- } else {
- date = parts[nextidx + 2]
- platform = parts[nextidx] "-" parts[nextidx + 1]
- nextidx += 3
- }
- }
-
- if (nextidx == cnt)
- vers="xxx"
- else {
- vers=""
- sep=""
- for (i = nextidx + 1; i <= cnt; i++) {
- vers = vers sep parts[i]
- sep="-"
- }
- }
- if (type == "vm") {
- vers = dotparts[3]
- url = root parts[2] "-" parts[3] "/" basearch "/" date "/" fname
- } else
- url = root parts[2] "/" fname
-
- # if this part doesn't begin w/ r (for svn rev), skip it, we can't parse
- # others for now
- if (substr(parts[nextidx], 1, 1) != "r")
- next
-
- # double check that date is valid, if not, skip it
- if (!isdate(date))
- next
-
- printf("%s %s %s %s %s %s %s %s %s %s\n", type, parts[2] "-" parts[3], arch, platform, date, parts[nextidx], vers, fname, url, MID)
- }
|