#!/bin/bash

VERSION_FILE="./versioning/VERSION"
VERSION_YAML_FILE="./versioning/VERSION_YAML"

# Read the current version
if [ -f "$VERSION_FILE" ]; then
  CURRENT_VERSION=$(cat "$VERSION_FILE")
else
  CURRENT_VERSION="0.0.0" # Default if file doesn't exist
fi

# Validate the current version format
if ! [[ "$CURRENT_VERSION" =~ ^[0-9]{4}\.[0-9]{1,2}\.[0-9]+$ ]]; then
  echo "Error: Invalid version format in $VERSION_FILE"
  exit 1
fi

# Extract components
CURRENT_YEAR=$(date +%Y)
CURRENT_MONTH=$(date +%-m) # Avoid leading zero for the month
CURRENT_SEQ=$(echo "$CURRENT_VERSION" | awk -F. '{print $3}')

VERSION_YEAR=$(echo "$CURRENT_VERSION" | awk -F. '{print $1}')
VERSION_MONTH=$(echo "$CURRENT_VERSION" | awk -F. '{print $2}')

# Determine new version
if [[ "$CURRENT_YEAR" == "$VERSION_YEAR" && "$CURRENT_MONTH" == "$VERSION_MONTH" ]]; then
  NEXT_SEQ=$((CURRENT_SEQ + 1))
else
  NEXT_SEQ=1 # Reset sequence for a new month
fi

NEW_VERSION="${CURRENT_YEAR}.${CURRENT_MONTH}.${NEXT_SEQ}"

# Update the plain text VERSION file
echo "$NEW_VERSION" > "$VERSION_FILE"

# Update the YAML VERSION_YAML file
echo "version: $NEW_VERSION" > "$VERSION_YAML_FILE"

# Commit and tag
if ! git add "$VERSION_FILE" "$VERSION_YAML_FILE"; then
  echo "Error: Failed to stage version files"
  exit 1
fi
if ! git commit -m "Bump version to $NEW_VERSION [skip-versioning]"; then
  echo "Error: Failed to commit version bump"
  exit 1
fi
if ! git tag "v$NEW_VERSION"; then
  echo "Error: Failed to create version tag"
  exit 1
fi
