~cytrogen/gstack

ref: cf73db5f19040218ecd50d0b81acffd40b63f056 gstack/bin/gstack-patch-names -rwxr-xr-x 1.2 KiB
cf73db5f — Garry Tan feat: autoplan DX integration + README docs (v0.15.4.0) (#791) 5 days ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/env bash
# gstack-patch-names — patch name: field in SKILL.md frontmatter for prefix mode
# Usage: gstack-patch-names <gstack-dir> <true|false|1|0>
set -euo pipefail

GSTACK_DIR="$1"
DO_PREFIX="$2"

# Normalize prefix arg
case "$DO_PREFIX" in true|1) DO_PREFIX=1 ;; *) DO_PREFIX=0 ;; esac

PATCHED=0
for skill_dir in "$GSTACK_DIR"/*/; do
  [ -f "$skill_dir/SKILL.md" ] || continue
  dir_name="$(basename "$skill_dir")"
  [ "$dir_name" = "node_modules" ] && continue
  cur=$(grep -m1 '^name:' "$skill_dir/SKILL.md" 2>/dev/null | sed 's/^name:[[:space:]]*//' | tr -d '[:space:]' || true)
  [ -z "$cur" ] && continue
  [ "$cur" = "gstack" ] && continue  # never prefix root skill
  if [ "$DO_PREFIX" -eq 1 ]; then
    case "$cur" in gstack-*) continue ;; esac
    new="gstack-$cur"
  else
    case "$cur" in gstack-*) ;; *) continue ;; esac
    [ "$dir_name" = "$cur" ] && continue  # inherently prefixed (gstack-upgrade)
    new="${cur#gstack-}"
  fi
  tmp="$(mktemp "${skill_dir}/SKILL.md.XXXXXX")"
  sed "1,/^---$/s/^name:[[:space:]]*${cur}/name: ${new}/" "$skill_dir/SKILL.md" > "$tmp" && mv "$tmp" "$skill_dir/SKILL.md"
  PATCHED=$((PATCHED + 1))
done
if [ "$PATCHED" -gt 0 ]; then
  echo "  patched name: field in $PATCHED skills"
fi