mirror of
https://github.com/lukaszraczylo/gohoarder.git
synced 2026-06-10 23:29:22 +00:00
fixes
This commit is contained in:
Executable
+55
@@ -0,0 +1,55 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# generate-version.sh
|
||||
# Generates semantic version based on git tags and commits
|
||||
#
|
||||
# Usage:
|
||||
# ./script/generate-version.sh
|
||||
#
|
||||
# Environment variables (optional):
|
||||
# VERSION_PREFIX - Prefix for version tags (default: v)
|
||||
# FALLBACK_VERSION - Version to use if no tags found (default: 0.0.0)
|
||||
|
||||
VERSION_PREFIX="${VERSION_PREFIX:-v}"
|
||||
FALLBACK_VERSION="${FALLBACK_VERSION:-0.0.0}"
|
||||
|
||||
# Try to get version from git describe
|
||||
if git describe --tags --abbrev=0 2>/dev/null >/dev/null; then
|
||||
# Get the latest tag
|
||||
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null)
|
||||
|
||||
# Remove prefix if present
|
||||
VERSION="${LATEST_TAG#$VERSION_PREFIX}"
|
||||
|
||||
# Get commits since last tag
|
||||
COMMITS_SINCE_TAG=$(git rev-list ${LATEST_TAG}..HEAD --count 2>/dev/null || echo "0")
|
||||
|
||||
# Get current commit hash
|
||||
COMMIT_HASH=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
|
||||
|
||||
# If there are commits since the last tag, add pre-release identifier
|
||||
if [ "$COMMITS_SINCE_TAG" != "0" ]; then
|
||||
# Increment patch version and add pre-release identifier
|
||||
# Parse the version
|
||||
IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION"
|
||||
|
||||
# Increment patch for next development version
|
||||
NEXT_PATCH=$((PATCH + 1))
|
||||
|
||||
# Generate pre-release version
|
||||
VERSION="${MAJOR}.${MINOR}.${NEXT_PATCH}-dev.${COMMITS_SINCE_TAG}+${COMMIT_HASH}"
|
||||
fi
|
||||
else
|
||||
# No tags found, use fallback
|
||||
COMMIT_HASH=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
|
||||
COMMIT_COUNT=$(git rev-list --count HEAD 2>/dev/null || echo "0")
|
||||
VERSION="${FALLBACK_VERSION}-dev.${COMMIT_COUNT}+${COMMIT_HASH}"
|
||||
fi
|
||||
|
||||
# Check if working directory is dirty
|
||||
if [ -n "$(git status --porcelain 2>/dev/null)" ]; then
|
||||
VERSION="${VERSION}-dirty"
|
||||
fi
|
||||
|
||||
echo "$VERSION"
|
||||
Reference in New Issue
Block a user