Ship unsigned MCPB packages built from the ArtCraft Launcher CLIs, with install docs and skill 0.2.0 updates.
57 lines
2.1 KiB
Bash
Executable File
57 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# Erzeugt die Skill-Tabelle in README.md zwischen <!-- skills:start --> und <!-- skills:end -->
|
||
# 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 '<!-- skills:start -->' "$readme" || ! grep -q '<!-- skills:end -->' "$readme"; then
|
||
echo "README.md enthält die Marker <!-- skills:start --> / <!-- skills:end --> nicht." >&2
|
||
exit 1
|
||
fi
|
||
|
||
table="$(mktemp)"
|
||
trap 'rm -f "$table"' EXIT
|
||
{
|
||
echo "| Skill | Kurzbeschreibung | Version | Doku | Download | Erweiterung (.mcpb) |"
|
||
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//|/\\|}"
|
||
tag_enc="$(python3 -c 'import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1], safe=""))' "$name/v$ver")"
|
||
zip_link="[${name}-v${ver}.zip](${REPO_WEB}/releases/download/${tag_enc}/${name}-v${ver}.zip)"
|
||
mcpb=""
|
||
if [[ -f "$SKILLS_DIR/$name/extension/manifest.json" ]]; then
|
||
mcpb="[${name}-v${ver}.mcpb](${REPO_WEB}/releases/download/${tag_enc}/${name}-v${ver}.mcpb)"
|
||
fi
|
||
printf '| [%s](skills/%s/) | %s | %s | [README](skills/%s/README.md) | %s | %s |\n' \
|
||
"$name" "$name" "$desc" "$ver" "$name" "$zip_link" "$mcpb"
|
||
done < <(skill_names)
|
||
} > "$table"
|
||
|
||
new="$(tr -d '\r' < "$readme" | awk -v t="$table" '
|
||
/<!-- skills:start -->/ { print; while ((getline l < t) > 0) print l; skip = 1; next }
|
||
/<!-- skills:end -->/ { 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
|