#!/bin/bash
TASK=$1
HOUR=$2
LOG_FILE="$HOME/code/utils/pipelines/status.log"
PIPELINE_DIR="$HOME/code/utils/pipelines"

# Case 1: No arguments - Show Status
if [ -z "$TASK" ]; then
    echo "--- Last 10 Status Logs ---"
    [ -f "$LOG_FILE" ] && tail -n 10 "$LOG_FILE" || echo "No logs yet."
    echo "--- Active Cron Schedules ---"
    crontab -l 2>/dev/null | grep "job" || echo "No jobuled tasks."
    exit 0
fi

# Case 2: Task + Hour - Schedule it
if [ -n "$HOUR" ]; then
    (crontab -l 2>/dev/null | grep -v "job $TASK"; echo "0 $HOUR * * * $HOME/code/utils/job $TASK") | crontab -
    echo "Scheduled: $TASK will run daily at $HOUR:00"
    exit 0
fi

# Case 3: Task only - Run it now
if [ ! -f "$PIPELINE_DIR/$TASK.sh" ]; then
    echo "Error: Task script $PIPELINE_DIR/$TASK.sh not found."
    exit 1
fi

echo "[$(date '+%Y-%m-%d %H:%M:%S')] Starting $TASK..." >> "$LOG_FILE"
if bash "$PIPELINE_DIR/$TASK.sh" >> "$LOG_FILE" 2>&1; then
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] SUCCESS: $TASK" >> "$LOG_FILE"
    echo "Task '$TASK' finished successfully."
else
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] FAILED: $TASK" >> "$LOG_FILE"
    echo "Task '$TASK' failed. Check logs."
    exit 1
fi
