mirror of
https://github.com/gitbutlerapp/gitbutler.git
synced 2024-12-27 03:22:15 +03:00
58 lines
1.2 KiB
Bash
Executable File
58 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
function help() {
|
|
local to="$1"
|
|
|
|
echo "Usage: $0 <version> <bump>" 1>&$to
|
|
echo 1>&$to
|
|
echo "where:" 1>&$to
|
|
echo " <version> is a current semver version." 1>&$to
|
|
echo " <bump> is either 'patch', 'major' or 'minor'." 1>&$to
|
|
}
|
|
|
|
function error() {
|
|
echo "error: $@" 1>&2
|
|
echo 1>&2
|
|
help 2
|
|
exit 1
|
|
}
|
|
|
|
function info() {
|
|
echo "$@"
|
|
}
|
|
|
|
VERSION="$1"
|
|
BUMP="$2"
|
|
|
|
# https://semver.org/
|
|
SEMVER_REGEX="^(0|[1-9][[:digit:]]*)\.(0|[1-9][[:digit:]]*)\.(0|[1-9][[:digit:]]*)(?:-((?:0|[1-9][[:digit:]]*|[[:digit:]]*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9][[:digit:]]*|[[:digit:]]*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$"
|
|
(echo "$VERSION" | grep -Eq "$SEMVER_REGEX") || error "'$VERSION' not a semver"
|
|
|
|
case "$BUMP" in
|
|
major)
|
|
MAJOR="$(($(echo "$VERSION" | cut -d. -f1) + 1))"
|
|
MINOR="0"
|
|
PATCH="0"
|
|
echo "$MAJOR.$MINOR.$PATCH"
|
|
;;
|
|
minor)
|
|
MAJOR="$(echo "$VERSION" | cut -d. -f1)"
|
|
MINOR="$(($(echo "$VERSION" | cut -d. -f2) + 1))"
|
|
PATCH="0"
|
|
echo "$MAJOR.$MINOR.$PATCH"
|
|
;;
|
|
patch)
|
|
MAJOR="$(echo "$VERSION" | cut -d. -f1)"
|
|
MINOR="$(echo "$VERSION" | cut -d. -f2)"
|
|
PATCH="$(($(echo "$VERSION" | cut -d. -f3) + 1))"
|
|
echo "$MAJOR.$MINOR.$PATCH"
|
|
;;
|
|
*)
|
|
error "invalid bump type: $BUMP"
|
|
;;
|
|
esac
|