56 lines
2.0 KiB
Bash
Executable File
56 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# TASK MONITOR - Checks for task completion
|
|
# Runs every 10 minutes via cron
|
|
|
|
LOG_FILE=/root/wizards/allegro/logs/task-monitor.log
|
|
WORK_QUEUE=/root/wizards/allegro/WORK-QUEUE.md
|
|
ALLEGRO_WORKSPACE=/root/wizards/allegro
|
|
|
|
mkdir -p $(dirname $LOG_FILE)
|
|
|
|
echo "[$(date)] === TASK MONITOR CHECK ===" >> $LOG_FILE
|
|
|
|
# Count tasks by status (each status is on its own line)
|
|
PENDING=$(grep -c '^\*\*Status:\*\* PENDING' $WORK_QUEUE 2>/dev/null || echo 0)
|
|
IN_PROGRESS=$(grep -c 'IN_PROGRESS' $WORK_QUEUE 2>/dev/null || echo 0)
|
|
COMPLETE=$(grep -c '^\*\*Status:\*\* COMPLETE' $WORK_QUEUE 2>/dev/null || echo 0)
|
|
|
|
# Get first number only if multiple lines
|
|
PENDING=$(echo $PENDING | awk '{print $1}')
|
|
IN_PROGRESS=$(echo $IN_PROGRESS | awk '{print $1}')
|
|
COMPLETE=$(echo $COMPLETE | awk '{print $1}')
|
|
|
|
TOTAL=$((PENDING + IN_PROGRESS + COMPLETE))
|
|
|
|
echo "[$(date)] Queue status: $PENDING pending, $IN_PROGRESS active, $COMPLETE complete" >> $LOG_FILE
|
|
|
|
# Calculate completion percentage
|
|
if [ "$TOTAL" -gt 0 ] 2>/dev/null; then
|
|
PERCENT=$((COMPLETE * 100 / TOTAL))
|
|
echo "[$(date)] Overall progress: ${PERCENT}%" >> $LOG_FILE
|
|
fi
|
|
|
|
# Check for active tasks
|
|
for active_file in ${ALLEGRO_WORKSPACE}/work/*.active; do
|
|
if [ -f "$active_file" ]; then
|
|
TASK_NUM=$(basename "$active_file" .active)
|
|
echo "[$(date)] Found active task: $TASK_NUM" >> $LOG_FILE
|
|
|
|
# Check if completion file exists
|
|
if [ -f "${ALLEGRO_WORKSPACE}/completed/${TASK_NUM}.txt" ]; then
|
|
echo "[$(date)] $TASK_NUM completed!" >> $LOG_FILE
|
|
|
|
# Update work queue - mark as complete
|
|
sed -i "s/### $TASK_NUM.*\[IN_PROGRESS\]/### $TASK_NUM [COMPLETE]/" ${WORK_QUEUE}
|
|
sed -i "s/\*\*Status:\*\* IN_PROGRESS/**Status:** COMPLETE/" ${WORK_QUEUE}
|
|
|
|
# Move active file to completed
|
|
mv "$active_file" "${ALLEGRO_WORKSPACE}/completed/${TASK_NUM}.done"
|
|
|
|
echo "[$(date)] $TASK_NUM archived." >> $LOG_FILE
|
|
fi
|
|
fi
|
|
done
|
|
|
|
echo "[$(date)] === MONITOR CHECK COMPLETE ===" >> $LOG_FILE
|