#!/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}")