You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.3 KiB
Bash
69 lines
1.3 KiB
Bash
4 years ago
|
#!/bin/sh
|
||
|
|
||
|
# Copyright (c) 2020 Tailscale Inc & AUTHORS All rights reserved.
|
||
|
# Use of this source code is governed by a BSD-style
|
||
|
# license that can be found in the LICENSE file.
|
||
|
|
||
|
set -eu
|
||
|
|
||
|
mode=$1
|
||
|
describe=$2
|
||
|
|
||
|
long() {
|
||
|
ver="${describe#v}"
|
||
|
stem="${ver%%-*}"
|
||
|
case "$stem" in
|
||
|
*.*.*)
|
||
|
# Full SemVer, nothing to do.
|
||
|
semver="${stem}"
|
||
|
;;
|
||
|
*.*)
|
||
|
# Old style major.minor, add a .0
|
||
|
semver="${stem}.0"
|
||
|
;;
|
||
|
*)
|
||
|
echo "Unparseable version $stem" >&2
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
suffix="${ver#$stem}"
|
||
|
case "$suffix" in
|
||
|
-*-*)
|
||
|
# Has a change count in addition to the commit hash.
|
||
|
;;
|
||
|
-*)
|
||
|
# Missing change count, add one.
|
||
|
suffix="-0${suffix}"
|
||
|
;;
|
||
|
*)
|
||
|
echo "Unexpected version suffix" >&2
|
||
|
exit 1
|
||
|
esac
|
||
|
echo "${semver}${suffix}"
|
||
|
}
|
||
|
|
||
|
short() {
|
||
|
ver="$(long)"
|
||
|
case "$ver" in
|
||
|
*-*-*)
|
||
|
echo "${ver%-*}"
|
||
|
;;
|
||
|
*-*)
|
||
|
echo "$ver"
|
||
|
;;
|
||
|
*)
|
||
|
echo "Long version in invalid format" >&2
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
}
|
||
|
|
||
|
case "$mode" in
|
||
|
long)
|
||
|
long
|
||
|
;;
|
||
|
short)
|
||
|
short
|
||
|
;;
|
||
|
esac
|