#!/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