mirror of https://github.com/dexidp/dex.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.6 KiB
49 lines
1.6 KiB
#!/bin/sh -e |
|
|
|
# parse the current git commit hash |
|
COMMIT=`git rev-parse --short=8 HEAD` |
|
|
|
# check if the current commit has a matching tag (filter for v* tags, excluding api/) |
|
TAG=$(git describe --exact-match --abbrev=0 --tags --match="v[0-9]*" 2> /dev/null || true) |
|
|
|
# use the matching tag as the version, if available |
|
if [ -z "$TAG" ]; then |
|
# No exact tag on current commit, find the last version tag and bump minor version |
|
# Get all tags matching v[0-9]*, sort them, and take the last one |
|
LAST_TAG=$(git tag --list "v[0-9]*" --sort=-version:refname | head -1) |
|
|
|
if [ -z "$LAST_TAG" ]; then |
|
# No tags found, use v0.1.0 as fallback |
|
BASE_VERSION="v0.1.0" |
|
else |
|
# Parse the last tag and bump minor version |
|
# Remove 'v' prefix |
|
TAG_WITHOUT_V="${LAST_TAG#v}" |
|
|
|
# Split version into parts (major.minor.patch) |
|
MAJOR=$(echo "$TAG_WITHOUT_V" | cut -d. -f1) |
|
MINOR=$(echo "$TAG_WITHOUT_V" | cut -d. -f2) |
|
PATCH=$(echo "$TAG_WITHOUT_V" | cut -d. -f3) |
|
|
|
# Bump minor version |
|
MINOR=$((MINOR + 1)) |
|
|
|
# Construct base version with bumped minor |
|
BASE_VERSION="v${MAJOR}.${MINOR}.0" |
|
fi |
|
|
|
# Get commit timestamp in YYYYMMDDhhmmss format |
|
TIMESTAMP=$(git log -1 --format=%ci HEAD | sed 's/[-: ]//g' | cut -c1-14) |
|
|
|
# Construct pseudo-version |
|
VERSION="${BASE_VERSION}-${TIMESTAMP}-${COMMIT}" |
|
else |
|
VERSION=$TAG |
|
fi |
|
|
|
# check for changed files (not untracked files) |
|
if [ -n "$(git diff --shortstat 2> /dev/null | tail -n1)" ]; then |
|
VERSION="${VERSION}-dirty" |
|
fi |
|
|
|
echo $VERSION
|
|
|