#!/bin/bash # Version management script for Basil set -e VERSION_FILE="VERSION" # Get current version get_version() { if [ -f "$VERSION_FILE" ]; then cat "$VERSION_FILE" | tr -d '\n' else echo "2025.10.1" fi } # Increment version (bump the increment part) bump_version() { current=$(get_version) year=$(echo "$current" | cut -d. -f1) month=$(echo "$current" | cut -d. -f2) increment=$(echo "$current" | cut -d. -f3) current_year=$(date +%Y) current_month=$(date +%-m) # If year or month changed, reset increment to 1 if [ "$year" != "$current_year" ] || [ "$month" != "$current_month" ]; then new_version="${current_year}.${current_month}.1" else # Otherwise increment increment=$((increment + 1)) new_version="${year}.${month}.${increment}" fi echo "$new_version" > "$VERSION_FILE" echo "$new_version" } # Tag and push Docker images tag_and_push() { version=$(get_version) echo "Tagging and pushing version: $version" # Tag API docker tag basil-api "harbor.pkartchner.com/basil/api:${version}" docker tag basil-api "harbor.pkartchner.com/basil/api:latest" # Tag Web docker tag basil-web "harbor.pkartchner.com/basil/web:${version}" docker tag basil-web "harbor.pkartchner.com/basil/web:latest" # Push all tags echo "Pushing harbor.pkartchner.com/basil/api:${version}" docker push "harbor.pkartchner.com/basil/api:${version}" echo "Pushing harbor.pkartchner.com/basil/api:latest" docker push "harbor.pkartchner.com/basil/api:latest" echo "Pushing harbor.pkartchner.com/basil/web:${version}" docker push "harbor.pkartchner.com/basil/web:${version}" echo "Pushing harbor.pkartchner.com/basil/web:latest" docker push "harbor.pkartchner.com/basil/web:latest" echo "Successfully pushed version $version to Harbor" } # Main command handler case "${1:-}" in get) get_version ;; bump) bump_version ;; push) tag_and_push ;; *) echo "Usage: $0 {get|bump|push}" echo " get - Show current version" echo " bump - Increment version number" echo " push - Tag and push current version to Harbor" exit 1 ;; esac