#!/usr/bin/env bash # upgrade.sh — Upgrade existing Automaton projects to support .state files and status.py # Usage: ./upgrade.sh [project-path] set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" STATUS_SCRIPT="$SCRIPT_DIR/status.py" if [ -n "${1:-}" ]; then PROJECT_DIR="$(cd "$1" && pwd)" else PROJECT_DIR="$(pwd)" fi TASKS_DIR="$PROJECT_DIR/.automaton/tasks" FRAMEWORK_DIR="$HOME/.automaton" echo "=== Automaton Upgrade ===" echo "Project: $PROJECT_DIR" echo "" # Bootstrap .state files for tasks using status.py --upgrade if [ -f "$STATUS_SCRIPT" ]; then echo "Step 1: Bootstrapping .state files for existing tasks..." python3 "$STATUS_SCRIPT" --upgrade --project "$PROJECT_DIR" || true echo "" fi # Add version marker to config.md if not present CONFIG_FILE="$FRAMEWORK_DIR/config.md" if [ -f "$CONFIG_FILE" ]; then if ! grep -q "Framework Version" "$CONFIG_FILE"; then echo "" >> "$CONFIG_FILE" echo "## Framework Version" >> "$CONFIG_FILE" echo "- **Version**: 2.0" >> "$CONFIG_FILE" echo "- **State enforcement**: enabled (.state file + status.py)" >> "$CONFIG_FILE" echo "" >> "$CONFIG_FILE" echo "Added version marker to $CONFIG_FILE" else echo "Version marker already present in $CONFIG_FILE" fi else echo "WARNING: $CONFIG_FILE not found. Creating with version marker." cat > "$CONFIG_FILE" << 'EOF' # Framework Configuration ## Framework Version - **Version**: 2.0 - **State enforcement**: enabled (.state file + status.py) EOF fi echo "" echo "=== Upgrade Complete ===" echo "Run 'python ~/.automaton/scripts/status.py --list --project $PROJECT_DIR' to verify task states." echo "Run 'python ~/.automaton/scripts/status.py --audit --project $PROJECT_DIR' to check for violations."