golden-age / paperdoll-renderer
package-version.sh
| 1 | #!/usr/bin/env bash |
| 2 | # Map a git tag or the Cargo.toml version to a package version X.Y.Z. |
| 3 | # Tags may be vX.Y.Z or X.Y.Z. Other spellings fail instead of being rewritten. |
| 4 | set -euo pipefail |
| 5 | |
| 6 | root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" |
| 7 | |
| 8 | if [[ -n "${PACKAGE_VERSION:-}" ]]; then |
| 9 | version="$PACKAGE_VERSION" |
| 10 | elif [[ -n "${CI_COMMIT_TAG:-}" ]]; then |
| 11 | version="${CI_COMMIT_TAG#v}" |
| 12 | else |
| 13 | version="$(sed -n 's/^version = "\([^"]*\)"/\1/p' "$root/Cargo.toml" | head -n 1)" |
| 14 | fi |
| 15 | |
| 16 | if [[ ! "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then |
| 17 | echo "package version must be X.Y.Z (tag vX.Y.Z or X.Y.Z); got '${CI_COMMIT_TAG:-$version}'" >&2 |
| 18 | exit 1 |
| 19 | fi |
| 20 | |
| 21 | printf '%s\n' "$version" |