#!/usr/bin/env bash
#
# new-day.sh — scaffold today's learning journal entry from the template.
#
# Usage:
#   ./scripts/new-day.sh            # next day number, today's date
#   ./scripts/new-day.sh 12         # force day 12
#   ./scripts/new-day.sh 12 2026-07-08
#
# Creates journal/month-NN/day-NNN.md from templates/DAILY_TEMPLATE.md,
# fills in day/date/month/week, and prints a suggested commit message.

set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
TEMPLATE="$ROOT/templates/DAILY_TEMPLATE.md"
JOURNAL="$ROOT/journal"

[[ -f "$TEMPLATE" ]] || { echo "error: template not found at $TEMPLATE" >&2; exit 1; }

# Determine the next day number if not supplied.
if [[ "${1:-}" =~ ^[0-9]+$ ]]; then
  DAY="$1"
else
  last=$(find "$JOURNAL" -name 'day-*.md' 2>/dev/null \
          | sed -E 's/.*day-0*([0-9]+)\.md/\1/' | sort -n | tail -1)
  DAY=$(( ${last:-0} + 1 ))
fi

DATE="${2:-$(date +%Y-%m-%d)}"
DDD=$(printf '%03d' "$DAY")
MONTH=$(( (DAY - 1) / 28 + 1 ))           # 28-day months in this plan
MM=$(printf '%02d' "$MONTH")
DAY_IN_MONTH=$(( (DAY - 1) % 28 + 1 ))
WEEK=$(( (DAY_IN_MONTH - 1) / 7 + 1 ))

OUTDIR="$JOURNAL/month-$MM"
OUT="$OUTDIR/day-$DDD.md"
mkdir -p "$OUTDIR"

if [[ -e "$OUT" ]]; then
  echo "note: $OUT already exists — opening, not overwriting." >&2
else
  sed -e "s/0NN/$DDD/g" \
      -e "s/YYYY-MM-DD/$DATE/g" \
      -e "s/^month: 1/month: $MONTH/" \
      -e "s/^week: 1/week: $WEEK/" \
      "$TEMPLATE" > "$OUT"
  echo "created $OUT"
fi

echo
echo "Day $DDD · Month $MONTH · Week $WEEK · $DATE"
echo "Suggested commit:  docs(journal): day $DDD — <topic>"
echo "Don't forget to update LEARNING_LOG.md and PROGRESS.md."

# Open in \$EDITOR if set and interactive.
[[ -n "${EDITOR:-}" && -t 1 ]] && "$EDITOR" "$OUT" || true
