#!/usr/bin/env bash
#
# sync-version.sh
# Synchronize VERSION across all Cowork documentation files
#
# Usage: ./scripts/sync-version.sh [--check]
#   --check: Only check, don't modify files (same as check-version-sync.sh)
#
# Example: echo "1.1.0" > VERSION && ./scripts/sync-version.sh

set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
COWORK_ROOT="$(dirname "$SCRIPT_DIR")"

# Colors
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

# Check-only mode
if [[ "${1:-}" == "--check" ]]; then
    exec "$SCRIPT_DIR/check-version-sync.sh"
fi

echo "=== Cowork Version Sync ==="
echo

# Read VERSION file
if [[ ! -f "$COWORK_ROOT/VERSION" ]]; then
    echo "ERROR: VERSION file not found"
    exit 1
fi

VERSION=$(cat "$COWORK_ROOT/VERSION" | tr -d '[:space:]')
echo -e "Syncing to version: ${GREEN}$VERSION${NC}"
echo

# Get current date for CHANGELOG
CURRENT_DATE=$(date +%Y-%m-%d)

# 1. Update README.md version badge
echo "1. Updating README.md version badge..."
README="$COWORK_ROOT/README.md"
if [[ -f "$README" ]]; then
    sed -i.bak "s/Version-[0-9.]*-orange/Version-$VERSION-orange/" "$README"
    rm "${README}.bak"
    echo -e "   ${GREEN}✓${NC} Badge updated"
else
    echo -e "   ${YELLOW}⚠${NC}  README.md not found"
fi

# 2. Update README.md footer
echo "2. Updating README.md footer..."
if [[ -f "$README" ]]; then
    # Update last line with version + date
    sed -i.bak "$ s/Version [0-9.]*.*$/Version $VERSION | $(date +"%B %Y") | Part of [Claude Code Ultimate Guide](..\/README.md) | Crafted with Claude*/" "$README"
    rm "${README}.bak"
    echo -e "   ${GREEN}✓${NC} Footer updated"
fi

# 3. Check CHANGELOG.md has entry
echo "3. Checking CHANGELOG.md..."
CHANGELOG="$COWORK_ROOT/CHANGELOG.md"
if [[ -f "$CHANGELOG" ]]; then
    if grep -q "## \[$VERSION\]" "$CHANGELOG"; then
        echo -e "   ${GREEN}✓${NC} CHANGELOG already has [$VERSION] entry"
    else
        echo -e "   ${YELLOW}⚠${NC}  CHANGELOG missing [$VERSION] - add manually"
        echo "      Add this after line 7:"
        echo "      ## [$VERSION] - $CURRENT_DATE"
    fi
else
    echo -e "   ${YELLOW}⚠${NC}  CHANGELOG.md not found"
fi

# 4. Update reference.yaml
echo "4. Updating reference.yaml..."
REFERENCE="$COWORK_ROOT/machine-readable/reference.yaml"
if [[ -f "$REFERENCE" ]]; then
    sed -i.bak "s/^version: *\".*\"/version: \"$VERSION\"/" "$REFERENCE"
    sed -i.bak "s/^updated: *\".*\"/updated: \"$CURRENT_DATE\"/" "$REFERENCE"
    rm "${REFERENCE}.bak"
    echo -e "   ${GREEN}✓${NC} Reference YAML updated"
else
    echo -e "   ${YELLOW}⚠${NC}  reference.yaml not found"
fi

# 5. Reminder for parent README
echo "5. Parent README.md..."
echo -e "   ${YELLOW}ℹ${NC}  Manually update parent README.md if needed"
echo "      Check line ~308 for Cowork section version references"

echo
echo "=== Summary ==="
echo -e "${GREEN}Version synchronized to $VERSION${NC}"
echo
echo "Next steps:"
echo "  1. Review changes: git diff"
echo "  2. Run verification: ./scripts/check-version-sync.sh"
echo "  3. Update CHANGELOG.md if needed"
echo "  4. Commit: git add . && git commit -m \"docs(cowork): bump version to $VERSION\""
