#!/usr/bin/env bash
# Samler all prosjektdokumentasjon til én fil for deling med AI-er etc.
# Bruk: ./scripts/summary.sh              → skriver scripts/synops.md
#        ./scripts/summary.sh -            → skriver til stdout (for piping)
#
# Rekkefølge: overblikk → arkitektur → konsepter → tekniske detaljer → drift

set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
OUT="$SCRIPT_DIR/synops.md"

# Prioritert rekkefølge av mapper under docs/
# Fra overblikk og visjon → ned til implementeringsdetaljer
DOC_ORDER=(
    retninger       # Arkitektoniske teser og vedtatte retninger
    primitiver      # Spesifikasjoner for kjerneprimitivene
    concepts        # Brukeropplevelser og produktområder
    features        # Tekniske byggeklosser
    infra           # Infrastruktur og drift
    setup           # Oppsett og driftsprosedyrer
    erfaringer      # Lærdommer fra implementering
    proposals       # Idébank (uimplementerte forslag)
)

collect() {
    # 1. Prosjektguide (CLAUDE.md) først — gir komplett overblikk
    if [[ -f "$ROOT/CLAUDE.md" ]]; then
        emit "$ROOT/CLAUDE.md"
    fi

    # 2. Overordnet arkitektur
    if [[ -f "$ROOT/docs/arkitektur.md" ]]; then
        emit "$ROOT/docs/arkitektur.md"
    fi

    # 3. Dokumentmapper i prioritert rekkefølge
    for dir in "${DOC_ORDER[@]}"; do
        [[ -d "$ROOT/docs/$dir" ]] || continue
        for f in "$ROOT/docs/$dir"/*.md; do
            [[ -f "$f" ]] || continue
            emit "$f"
        done
    done

    # 4. Eventuelle docs/-mapper som ikke er i DOC_ORDER (fang nye mapper automatisk)
    for dir in "$ROOT"/docs/*/; do
        [[ -d "$dir" ]] || continue
        dirname="$(basename "$dir")"
        # Hopp over de vi allerede har tatt
        skip=false
        for known in "${DOC_ORDER[@]}"; do
            [[ "$dirname" == "$known" ]] && skip=true && break
        done
        $skip && continue
        for f in "$dir"*.md; do
            [[ -f "$f" ]] || continue
            emit "$f"
        done
    done
}

emit() {
    local f="$1"
    local rel="${f#"$ROOT/"}"
    echo "================================================================"
    echo "FILE: $rel"
    echo "================================================================"
    echo ""
    cat "$f"
    echo ""
    echo ""
}

if [[ "${1:-}" == "-" ]]; then
    collect
else
    collect > "$OUT"
    echo "Wrote $OUT ($(wc -l < "$OUT") lines)"
fi
