#!/usr/bin/env bash # Erzeugt die Skill-Tabelle in README.md zwischen und # neu. Mit --check wird nur geprüft, ob die Tabelle aktuell ist (Exit-Code 1, wenn nicht). # Aufruf: scripts/update-index.sh [--check] set -euo pipefail source "$(dirname "$0")/lib.sh" REPO_WEB="https://git.gundel.dev/dg/claude-skills" readme="$ROOT/README.md" check=0 [[ "${1:-}" == "--check" ]] && check=1 if ! grep -q '' "$readme" || ! grep -q '' "$readme"; then echo "README.md enthält die Marker / nicht." >&2 exit 1 fi table="$(mktemp)" trap 'rm -f "$table"' EXIT { echo "| Skill | Kurzbeschreibung | Version | Doku | Download |" echo "|---|---|---|---|---|" while IFS= read -r name; do [[ -z "$name" ]] && continue desc="" ver="$(skill_version "$SKILLS_DIR/$name")" if fm="$(frontmatter "$SKILLS_DIR/$name/SKILL.md" 2>/dev/null)"; then desc="$(fm_value "$fm" description || true)" fi desc="${desc//|/\\|}" printf '| [%s](skills/%s/) | %s | %s | [README](skills/%s/README.md) | [%s-v%s.zip](%s/releases/tag/%s/v%s) |\n' \ "$name" "$name" "$desc" "$ver" "$name" "$name" "$ver" "$REPO_WEB" "$name" "$ver" done < <(skill_names) } > "$table" new="$(tr -d '\r' < "$readme" | awk -v t="$table" ' // { print; while ((getline l < t) > 0) print l; skip = 1; next } // { skip = 0 } !skip { print }')" if [[ $check -eq 1 ]]; then if [[ "$new" != "$(tr -d '\r' < "$readme")" ]]; then echo "README.md ist nicht aktuell – scripts/update-index.sh ausführen und committen." >&2 exit 1 fi echo "README.md ist aktuell." else printf '%s\n' "$new" > "$readme" echo "README.md aktualisiert." fi