diff --git a/generate-stackbrew-library.sh b/generate-stackbrew-library.sh index 8799780f..711b474b 100755 --- a/generate-stackbrew-library.sh +++ b/generate-stackbrew-library.sh @@ -1,10 +1,6 @@ #!/usr/bin/env bash set -Eeuo pipefail -declare -A aliases=( - [4.1]='4 latest' - [3.13]='3' -) defaultVariant='ubuntu' self="$(basename "$BASH_SOURCE")" @@ -14,7 +10,7 @@ if [ "$#" -eq 0 ]; then versions="$(jq -r ' to_entries # sort version numbers with highest first - | sort_by(.key | split("[.-]"; "") | map(try tonumber // .)) + | sort_by(.key | split("[.-]"; "") | map(tonumber? // .)) | reverse | map(if .value then .key | @sh else empty end) | join(" ") @@ -81,6 +77,8 @@ join() { echo "${out#$sep}" } +declare -A usedAliases=() + for version; do export version rcVersion="${version%-rc}" @@ -103,16 +101,22 @@ for version; do versionAliases=() if [ "$version" = "$rcVersion" ]; then while [ "$fullVersion" != "$version" -a "${fullVersion%[.-]*}" != "$fullVersion" ]; do - versionAliases+=( $fullVersion ) + versionAliases+=( "$fullVersion" ) fullVersion="${fullVersion%[.-]*}" done else - versionAliases+=( $fullVersion ) + versionAliases+=( "$fullVersion" ) + fi + versionAliases+=( $version ) + + if [ "$version" = "$rcVersion" ]; then + for tagAlias in "${fullVersion%%.*}" latest; do + if [ -z "${usedAliases[$tagAlias]:-}" ]; then + versionAliases+=( "$tagAlias" ) + usedAliases["$tagAlias"]="$version" + fi + done fi - versionAliases+=( - $version - ${aliases[$version]:-} - ) for variant in ubuntu alpine; do dir="$version/$variant" diff --git a/versions.json b/versions.json index eca5efa1..4e0b5177 100644 --- a/versions.json +++ b/versions.json @@ -53,6 +53,7 @@ "version": "4.1.3" }, "4.1-rc": null, + "4.2": null, "4.2-rc": { "alpine": { "version": "3.22" diff --git a/versions.sh b/versions.sh index ed1782df..fadef051 100755 --- a/versions.sh +++ b/versions.sh @@ -96,7 +96,6 @@ for version in "${versions[@]}"; do if [[ "$fullVersion" == "$rcFullVersion"* ]] || [ "$latestVersion" = "$rcFullVersion" ]; then # "x.y.z-rc1" == x.y.z* echo >&2 "warning: skipping/removing '$version' ('$rcVersion' is at '$rcFullVersion' which is newer than '$fullVersion')" - json="$(jq <<<"$json" -c '.[env.version] = null')" continue fi fi @@ -184,6 +183,16 @@ for version in "${versions[@]}"; do } ' )" + + # make sure RCs and releases have corresponding pairs + json="$(jq <<<"$json" -c ' + .[ + env.rcVersion + + if env.version == env.rcVersion then + "-rc" + else "" end + ] //= null + ')" done jq <<<"$json" -S . > versions.json