trax/scripts/tm_tracker.sh

103 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
# Taskmaster Tracker Script
# Wrapper for the Python taskmaster_tracker.py script
set -e
# Get the directory where this script is located
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
# Change to project root
cd "$PROJECT_ROOT"
# Check if uv is available
if ! command -v uv &> /dev/null; then
echo "Error: uv package manager not found. Please install uv first."
exit 1
fi
# Use uv run for Python execution
PYTHON_CMD="uv run python"
# Function to show usage
show_usage() {
echo "Usage: $0 [OPTIONS]"
echo ""
echo "Options:"
echo " --watch Watch for changes continuously"
echo " --interval SECONDS Watch interval in seconds (default: 5.0)"
echo " --once Run once and exit (default)"
echo " --help Show this help message"
echo ""
echo "Examples:"
echo " $0 --once # Run once and exit"
echo " $0 --watch # Watch continuously with 5s interval"
echo " $0 --watch --interval 10 # Watch with 10s interval"
echo ""
echo "The tracker will:"
echo " - Add 'created_at' timestamps to new tasks"
echo " - Add 'updated_at' timestamps when tasks change"
echo " - Add 'status_changed_to_X' timestamps for status changes"
echo " - Create backups before making changes"
echo " - Log all activities to logs/taskmaster_tracker.log"
}
# Parse command line arguments
WATCH_MODE=false
INTERVAL=5.0
RUN_ONCE=true
while [[ $# -gt 0 ]]; do
case $1 in
--watch)
WATCH_MODE=true
RUN_ONCE=false
shift
;;
--interval)
INTERVAL="$2"
shift 2
;;
--once)
RUN_ONCE=true
WATCH_MODE=false
shift
;;
--help|-h)
show_usage
exit 0
;;
*)
echo "Unknown option: $1"
show_usage
exit 1
;;
esac
done
# Check if Python script exists
PYTHON_SCRIPT="$SCRIPT_DIR/taskmaster_tracker.py"
if [[ ! -f "$PYTHON_SCRIPT" ]]; then
echo "Error: taskmaster_tracker.py not found at $PYTHON_SCRIPT"
exit 1
fi
# Make sure the script is executable
chmod +x "$PYTHON_SCRIPT"
# Run the tracker
echo "Starting Taskmaster Tracker..."
echo "Project root: $PROJECT_ROOT"
echo "Python script: $PYTHON_SCRIPT"
if [[ "$WATCH_MODE" == true ]]; then
echo "Watch mode enabled (interval: ${INTERVAL}s)"
echo "Press Ctrl+C to stop"
echo ""
$PYTHON_CMD "$PYTHON_SCRIPT" --watch --interval "$INTERVAL"
else
echo "Running once..."
$PYTHON_CMD "$PYTHON_SCRIPT"
fi