Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_017ic4b6Kg9RWSTJzyz6KP9X
50 lines
2.4 KiB
Bash
Executable File
50 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Writes output/13-maven-facts.txt: release dates and metadata read straight from Maven Central (retries on HTTP 429).
|
|
set -uo pipefail
|
|
cd "$(dirname "$0")/.."
|
|
mkdir -p output
|
|
M=https://repo1.maven.org/maven2
|
|
get() { # url -> body (retry on 429/empty)
|
|
for i in 1 2 3 4 5 6; do
|
|
body="$(curl -sS --fail "$1" 2>/dev/null)" && [ -n "$body" ] && { printf '%s' "$body"; return 0; }
|
|
sleep 20
|
|
done
|
|
return 1
|
|
}
|
|
head_lm() { # url -> Last-Modified
|
|
for i in 1 2 3 4 5 6; do
|
|
lm="$(curl -sSI "$1" 2>/dev/null | tr -d '\r' | grep -i '^last-modified:' | cut -d' ' -f2-)" && [ -n "$lm" ] && { echo "$lm"; return 0; }
|
|
sleep 20
|
|
done
|
|
echo "unavailable"
|
|
}
|
|
meta() { # label path
|
|
local x; x="$(get "$M/$2/maven-metadata.xml")" || { echo "$1: metadata unavailable"; return; }
|
|
echo "$1: release=$(grep -o '<release>[^<]*' <<<"$x" | cut -d'>' -f2) lastUpdated=$(grep -o '<lastUpdated>[^<]*' <<<"$x" | cut -d'>' -f2)"
|
|
sleep 3
|
|
}
|
|
{
|
|
echo "# Maven Central facts, read $(date -u +%Y-%m-%d)"
|
|
echo
|
|
echo "# maven-metadata.xml: <release> and <lastUpdated> (yyyyMMddHHmmss, UTC)"
|
|
meta "com.vladmihalcea:hibernate-types-60 " com/vladmihalcea/hibernate-types-60
|
|
meta "com.vladmihalcea:hibernate-types-55 " com/vladmihalcea/hibernate-types-55
|
|
meta "com.vladmihalcea:hibernate-types-5 " com/vladmihalcea/hibernate-types-5
|
|
meta "io.hypersistence:hypersistence-utils-hibernate-71" io/hypersistence/hypersistence-utils-hibernate-71
|
|
meta "io.hypersistence:hypersistence-utils-hibernate-73" io/hypersistence/hypersistence-utils-hibernate-73
|
|
echo
|
|
echo "# jar Last-Modified on Central (upload time)"
|
|
for j in org/hibernate/orm/hibernate-core/7.4.14.Final/hibernate-core-7.4.14.Final.jar \
|
|
org/springframework/boot/spring-boot/4.1.2/spring-boot-4.1.2.jar \
|
|
io/hypersistence/hypersistence-utils-hibernate-73/3.16.0/hypersistence-utils-hibernate-73-3.16.0.jar; do
|
|
echo "$(basename "$j"): $(head_lm "$M/$j")"; sleep 3
|
|
done
|
|
echo
|
|
echo "# hibernate.version that hypersistence-utils-hibernate-73:3.16.0 was built against (its pom)"
|
|
get "$M/io/hypersistence/hypersistence-utils-hibernate-73/3.16.0/hypersistence-utils-hibernate-73-3.16.0.pom" | grep -E '^\s*<hibernate.version>' | sed 's/^ *//'
|
|
echo
|
|
echo "# newest Jackson 3 databind on Central"
|
|
get "$M/tools/jackson/core/jackson-databind/maven-metadata.xml" | grep -E '<release>' | sed 's/^ *//'
|
|
} > output/13-maven-facts.txt
|
|
cat output/13-maven-facts.txt
|