diff --git a/.gitea/workflows/sync-superpowers.yml b/.gitea/workflows/sync-superpowers.yml index 22522e6..49e28f4 100644 --- a/.gitea/workflows/sync-superpowers.yml +++ b/.gitea/workflows/sync-superpowers.yml @@ -71,114 +71,5 @@ jobs: shell: bash run: | set -euo pipefail - cd "$REPO_DIR" - - git config user.name "playbook-bot" - git config user.email "playbook-bot@local" - - git fetch origin "$SUPERPOWERS_BRANCH" - - tmp_dir="$(mktemp -d)" - git archive --format=tar "origin/${SUPERPOWERS_BRANCH}" "${SUPERPOWERS_DIR}/skills" | tar -xf - -C "$tmp_dir" - - tmp_skills_dir="$tmp_dir/${SUPERPOWERS_DIR}/skills" - if [ ! -d "$tmp_skills_dir" ]; then - echo "ERROR: ${SUPERPOWERS_DIR}/skills not found in ${SUPERPOWERS_BRANCH}" >&2 - exit 1 - fi - - git checkout -f main - - mkdir -p "$(dirname "$SUPERPOWERS_LIST")" - - old_list="$SUPERPOWERS_LIST" - if [ -f "$old_list" ]; then - while IFS= read -r name; do - [ -n "$name" ] || continue - rm -rf "codex/skills/$name" - done < "$old_list" - fi - - names=() - for dir in "$tmp_skills_dir"/*; do - [ -d "$dir" ] || continue - name="$(basename "$dir")" - - if [ -d "codex/skills/$name" ] && ! grep -qx "$name" "$old_list" 2>/dev/null; then - echo "ERROR: skill name conflict: $name" >&2 - exit 1 - fi - - rm -rf "codex/skills/$name" - cp -R "$dir" "codex/skills/$name" - names+=("$name") - done - - printf "%s\n" "${names[@]}" | sort > "$SUPERPOWERS_LIST" - - update_block() { - local file="$1" - local start="" - local end="" - local tmp="$(mktemp)" - - { - echo "### Third-party Skills (superpowers)" - echo "" - echo "$start" - while IFS= read -r name; do - [ -n "$name" ] || continue - echo "- $name" - done < "$SUPERPOWERS_LIST" - echo "$end" - } > "$tmp" - - if grep -q "$start" "$file"; then - awk -v start="$start" -v end="$end" -v block="$tmp" ' - BEGIN { - while ((getline line < block) > 0) { buf[++n] = line } - close(block) - inblock=0 - replaced=0 - } - { - if (!replaced && $0 == start) { - for (i=1; i<=n; i++) print buf[i] - inblock=1 - replaced=1 - next - } - if (inblock) { - if ($0 == end) { inblock=0 } - next - } - print - } - ' "$file" > "${file}.tmp" - mv "${file}.tmp" "$file" - else - echo "" >> "$file" - cat "$tmp" >> "$file" - fi - - rm -f "$tmp" - } - - update_block "SKILLS.md" - - git add codex/skills SKILLS.md - - if git diff --cached --quiet; then - echo "No changes to sync." - exit 0 - fi - - git commit -m ":package: deps(skills): sync superpowers" - - TOKEN="${{ secrets.WORKFLOW }}" - if [ -n "$TOKEN" ]; then - git remote set-url origin "https://oauth2:${TOKEN}@${GITHUB_SERVER_URL#https://}/${{ github.repository }}.git" - fi - - git push origin main + bash .gitea/ci/sync_superpowers.sh