Documentation Updates: - Enhanced AGENTS.md with user authentication details - Updated README.md with authentication API documentation - Added CONTRIBUTING.md guidelines for BDD testing - Version management guide improvements - Local CI/CD testing documentation Project Infrastructure: - Updated .gitignore for new file patterns - Enhanced git hooks documentation - YAML linting configuration - Script improvements and organization - Configuration management updates API Enhancements: - Greet service integration with authentication - Server middleware for JWT validation - Telemetry improvements - Version management utilities Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
154 lines
3.8 KiB
Bash
Executable File
154 lines
3.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# dance-lessons-coach Version Bump Script
|
|
# Usage: ./scripts/version-bump.sh [major|minor|patch|pre|release]
|
|
|
|
set -e
|
|
|
|
# Load current version
|
|
VERSION_FILE="VERSION"
|
|
if [ ! -f "$VERSION_FILE" ]; then
|
|
echo "❌ Version file not found: $VERSION_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
# Source version variables
|
|
source "$VERSION_FILE"
|
|
|
|
# Validate bump type
|
|
BUMP_TYPE="${1:-patch}"
|
|
case "$BUMP_TYPE" in
|
|
major|minor|patch|pre|release)
|
|
echo "📋 Bumping version: $BUMP_TYPE"
|
|
;;
|
|
*)
|
|
echo "❌ Invalid bump type: $BUMP_TYPE"
|
|
echo "Usage: $0 [major|minor|patch|pre|release]"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Bump version function
|
|
bump_version() {
|
|
local type="$1"
|
|
|
|
case "$type" in
|
|
major)
|
|
MAJOR=$((MAJOR + 1))
|
|
MINOR=0
|
|
PATCH=0
|
|
PRERELEASE=""
|
|
;;
|
|
minor)
|
|
MINOR=$((MINOR + 1))
|
|
PATCH=0
|
|
PRERELEASE=""
|
|
;;
|
|
patch)
|
|
PATCH=$((PATCH + 1))
|
|
PRERELEASE=""
|
|
;;
|
|
pre)
|
|
if [ -z "$PRERELEASE" ]; then
|
|
PRERELEASE="alpha.1"
|
|
else
|
|
# Extract number and increment
|
|
if [[ "$PRERELEASE" =~ ^(alpha|beta|rc)\.([0-9]+)$ ]]; then
|
|
PRE_TYPE="${BASH_REMATCH[1]}"
|
|
PRE_NUM="${BASH_REMATCH[2]}"
|
|
PRERELEASE="$PRE_TYPE.$((PRE_NUM + 1))"
|
|
else
|
|
PRERELEASE="alpha.1"
|
|
fi
|
|
fi
|
|
;;
|
|
release)
|
|
PRERELEASE=""
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Bump the version
|
|
bump_version "$BUMP_TYPE"
|
|
|
|
# Calculate new version
|
|
NEW_VERSION="$MAJOR.$MINOR.$PATCH"
|
|
if [ -n "$PRERELEASE" ]; then
|
|
NEW_VERSION="$NEW_VERSION-$PRERELEASE"
|
|
fi
|
|
|
|
echo "🔢 Current version: $MAJOR.$MINOR.$PATCH${PRERELEASE:+-$PRERELEASE}"
|
|
echo "🔜 New version: $NEW_VERSION"
|
|
|
|
# Update VERSION file
|
|
cat > "$VERSION_FILE" << VERSION_EOF
|
|
# dance-lessons-coach Version
|
|
|
|
# Current Version (Semantic Versioning)
|
|
MAJOR=$MAJOR
|
|
MINOR=$MINOR
|
|
PATCH=$PATCH
|
|
PRERELEASE="$PRERELEASE"
|
|
|
|
# Auto-generated fields (do not edit manually)
|
|
BUILD_DATE=""
|
|
GIT_COMMIT=""
|
|
GIT_TAG=""
|
|
|
|
# Version Format: {MAJOR}.{MINOR}.{PATCH}-{PRERELEASE}
|
|
# Example: 1.0.0, 1.0.0-alpha.1, 2.3.4-beta.2
|
|
|
|
# Semantic Versioning Rules:
|
|
# - MAJOR: Breaking changes, major features
|
|
# - MINOR: Backwards-compatible features
|
|
# - PATCH: Backwards-compatible bug fixes
|
|
# - PRERELEASE: alpha, beta, rc (pre-release versions)
|
|
|
|
# Changelog Reference:
|
|
# See AGENT_CHANGELOG.md for version history
|
|
VERSION_EOF
|
|
|
|
echo "✅ Updated VERSION file"
|
|
|
|
# Update main.go Swagger version (cross-platform)
|
|
MAIN_GO="cmd/server/main.go"
|
|
if [ -f "$MAIN_GO" ]; then
|
|
# Create temporary file
|
|
TMP_FILE=$(mktemp)
|
|
|
|
# Use awk for cross-platform sed replacement
|
|
awk -v new_version="$NEW_VERSION" '
|
|
{
|
|
if ($0 ~ /^\/\/ @version [0-9.]+/) {
|
|
print "// @version " new_version
|
|
} else {
|
|
print $0
|
|
}
|
|
}' "$MAIN_GO" > "$TMP_FILE"
|
|
|
|
# Replace original file
|
|
mv "$TMP_FILE" "$MAIN_GO"
|
|
echo "✅ Updated Swagger version in main.go"
|
|
fi
|
|
|
|
# Update README.md version badge
|
|
README_MD="README.md"
|
|
if [ -f "$README_MD" ]; then
|
|
# Create temporary file
|
|
TMP_FILE=$(mktemp)
|
|
|
|
# Use awk to update version badge
|
|
awk -v new_version="$NEW_VERSION" '{
|
|
if ($0 ~ /Version.*badge.*version/) {
|
|
print "[](https://gitea.arcodange.fr/arcodange/dance-lessons-coach/releases)"
|
|
} else {
|
|
print $0
|
|
}
|
|
}' "$README_MD" > "$TMP_FILE"
|
|
|
|
# Replace original file
|
|
mv "$TMP_FILE" "$README_MD"
|
|
echo "✅ Updated version badge in README.md"
|
|
fi
|
|
|
|
echo "🎉 Version bump complete: $NEW_VERSION"
|