|
@ -0,0 +1,49 @@ |
|
|
|
|
|
#!/bin/bash |
|
|
|
|
|
|
|
|
|
|
|
## List upstream available versions in reverse chronological order |
|
|
|
|
|
## |
|
|
|
|
|
## These versions information will be the input for the version information |
|
|
|
|
|
## usually used by the build process. |
|
|
|
|
|
## A external query of upstream sources will be done. |
|
|
|
|
|
## |
|
|
|
|
|
|
|
|
|
|
|
## This script is launched by ``charm upstream-versions`` and will receive these env variables |
|
|
|
|
|
## |
|
|
|
|
|
## |
|
|
|
|
|
## VERSION_LIMIT ## limit number of version to read |
|
|
|
|
|
## |
|
|
|
|
|
## |
|
|
|
|
|
## The script CWD will be the root of the charm directory |
|
|
|
|
|
## |
|
|
|
|
|
|
|
|
|
|
|
DOCKER_IMAGE_NAME=collabora/code |
|
|
|
|
|
|
|
|
|
|
|
semver:normalize() { |
|
|
|
|
|
local upstream_version="$1" |
|
|
|
|
|
local version="${upstream_version/./}" |
|
|
|
|
|
read -r year_month major minor patch <<< ${version//./ } |
|
|
|
|
|
if ! [ "${#patch}" == 1 ]; then |
|
|
|
|
|
echo "Error: build number is not a single digit: '${patch}' (upstream: '${upstream_version}')" >&2 |
|
|
|
|
|
return 1 |
|
|
|
|
|
fi |
|
|
|
|
|
if [ "${#major}" -gt 2 ]; then |
|
|
|
|
|
echo "Error: major number is more than 2 digits: '${major}' (upstream: '${upstream_version}')" >&2 |
|
|
|
|
|
return 1 |
|
|
|
|
|
fi |
|
|
|
|
|
major=$(printf "%02d" ${major}) |
|
|
|
|
|
echo "${year_month}${major}.${minor}.${patch}" |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
upstream:list() { |
|
|
|
|
|
local limit=${1:-5} |
|
|
|
|
|
docker-tags-fetch "$DOCKER_IMAGE_NAME" -l "${limit}" -f "^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" | |
|
|
|
|
|
sort -rV | |
|
|
|
|
|
cut -f 1 -d "-" |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while read -r "upstream_version"; do |
|
|
|
|
|
normalized_version=$(semver:normalize "${upstream_version}") || exit 1 |
|
|
|
|
|
printf "%s %s\n" "$(semver:normalize "${upstream_version}")" "$upstream_version" |
|
|
|
|
|
done < <(upstream:list "${VERSION_LIMIT}") |