#!/usr/bin/env bash
set -euo pipefail

repo_root() {
  local script_dir
  script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  if git -C "$script_dir" rev-parse --show-toplevel >/dev/null 2>&1; then
    git -C "$script_dir" rev-parse --show-toplevel
    return
  fi
  cd "$script_dir/../.." && pwd
}

print_chunk_list() {
  local title="$1"
  local empty_message="$2"
  shift 2
  local chunks=("$@")

  echo "$title"
  if (( ${#chunks[@]} == 0 )); then
    echo "  $empty_message"
    return
  fi

  local chunk
  for chunk in "${chunks[@]}"; do
    echo "  - $(basename "$chunk")"
  done
}

root="$(repo_root)"

shopt -s nullglob
active_chunks=("$root"/ai/chunks/active/chunk-[0-9]*-*.md)
backlog_chunks=("$root"/ai/chunks/backlog/chunk-[0-9]*-*.md)
completed_chunks=("$root"/ai/chunks/completed/chunk-[0-9]*-*.md)
shopt -u nullglob

IFS=$'\n' active_chunks=($(printf '%s\n' "${active_chunks[@]}" | sort))
IFS=$'\n' backlog_chunks=($(printf '%s\n' "${backlog_chunks[@]}" | sort))
IFS=$'\n' completed_chunks=($(printf '%s\n' "${completed_chunks[@]}" | sort))
unset IFS

latest_completed=()
if (( ${#completed_chunks[@]} > 0 )); then
  start_index=0
  if (( ${#completed_chunks[@]} > 5 )); then
    start_index=$(( ${#completed_chunks[@]} - 5 ))
  fi
  latest_completed=("${completed_chunks[@]:$start_index}")
fi

echo "Orchestrator Status"
echo
print_chunk_list "Active chunks:" "(no active chunks)" "${active_chunks[@]}"
echo
print_chunk_list "Backlog chunks:" "(no backlog chunks)" "${backlog_chunks[@]}"
echo
print_chunk_list "Latest completed chunks:" "(no completed chunks)" "${latest_completed[@]}"
echo
echo "Git status:"
git -C "$root" status --short --untracked-files=all | sed 's/^/  /'
