vibe-coding-cn/assets/skills/skills-skills/scripts/skill-seekers-update.sh

118 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# ==================== Purpose ====================
# Update the vendored Skill Seekers source snapshot inside this repo.
#
# Notes:
# - This keeps ONLY "source + configs + runtime manifests" to avoid importing upstream Markdown docs
# (which would affect this repo's markdownlint).
usage() {
cat <<'EOF'
Usage:
skill-seekers-update.sh [--repo <owner/repo>] [--ref <git-ref>] [--dry-run]
Defaults:
--repo yusufkaraaslan/Skill_Seekers
--ref main
Examples:
./assets/skills/skills-skills/scripts/skill-seekers-update.sh
./assets/skills/skills-skills/scripts/skill-seekers-update.sh --ref v2.1.1
./assets/skills/skills-skills/scripts/skill-seekers-update.sh --dry-run
EOF
}
die() {
echo "Error: $*" >&2
exit 1
}
script_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
target_dir="${script_dir}/Skill_Seekers-development"
repo="yusufkaraaslan/Skill_Seekers"
ref="main"
dry_run=0
while [[ $# -gt 0 ]]; do
case "$1" in
-h|--help)
usage
exit 0
;;
--repo)
[[ $# -ge 2 ]] || die "--repo requires an argument like owner/repo"
repo="$2"
shift 2
;;
--ref)
[[ $# -ge 2 ]] || die "--ref requires a git ref (branch/tag/commit)"
ref="$2"
shift 2
;;
--dry-run)
dry_run=1
shift
;;
--)
shift
break
;;
*)
die "Unknown argument: $1 (use --help)"
;;
esac
done
command -v curl >/dev/null 2>&1 || die "curl not found"
command -v tar >/dev/null 2>&1 || die "tar not found"
command -v rsync >/dev/null 2>&1 || die "rsync not found"
tmp_dir="$(mktemp -d)"
cleanup() { rm -rf "$tmp_dir"; }
trap cleanup EXIT
archive_url="https://codeload.github.com/${repo}/tar.gz/${ref}"
archive_path="${tmp_dir}/skill-seekers.tgz"
curl -fsSL "$archive_url" -o "$archive_path"
tar -xzf "$archive_path" -C "$tmp_dir"
extracted_root="$(find "$tmp_dir" -mindepth 1 -maxdepth 1 -type d | head -n 1)"
[[ -n "$extracted_root" ]] || die "Failed to locate extracted archive root"
if [[ "$dry_run" -eq 1 ]]; then
echo "DRY RUN:"
echo " repo: $repo"
echo " ref: $ref"
echo " from: $extracted_root"
echo " to: $target_dir"
exit 0
fi
mkdir -p "$target_dir"
rsync -a --delete \
--exclude '.git' \
--exclude '*.md' \
--exclude 'docs/' \
--exclude 'tests/' \
--exclude '.claude/' \
--exclude '.gitignore' \
--exclude 'CHANGELOG.md' \
--exclude 'ROADMAP.md' \
--exclude 'FUTURE_RELEASES.md' \
--exclude 'ASYNC_SUPPORT.md' \
--exclude 'STRUCTURE.md' \
--exclude 'CONTRIBUTING.md' \
--exclude 'QUICKSTART.md' \
--exclude 'BULLETPROOF_QUICKSTART.md' \
--exclude 'FLEXIBLE_ROADMAP.md' \
"$extracted_root"/ \
"$target_dir"/
echo "OK: updated vendored source in: $target_dir"