67 lines
1.7 KiB
Bash
Executable File
67 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Configuration
|
|
REPO_URL="https://git.tswf.io/ai-agents/ai-agent-skills.git"
|
|
TARGET_DIR=".agents/skills"
|
|
|
|
# Get script directory for relative paths
|
|
if [ -n "${BASH_SOURCE[0]+x}" ]; then
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$SCRIPT_DIR"
|
|
fi
|
|
|
|
# Create target directory if it doesn't exist
|
|
mkdir -p "$TARGET_DIR"
|
|
|
|
# Create temporary directory
|
|
TEMP_DIR=$(mktemp -d)
|
|
echo "Created temporary directory: $TEMP_DIR"
|
|
|
|
# Ensure cleanup on exit
|
|
cleanup() {
|
|
if [ -d "$TEMP_DIR" ]; then
|
|
rm -rf "$TEMP_DIR"
|
|
echo "Cleaned up temporary directory"
|
|
fi
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
# Clone repository
|
|
echo "Cloning repository $REPO_URL..."
|
|
git clone --depth 1 "$REPO_URL" "$TEMP_DIR/repo"
|
|
|
|
# Check if clone was successful
|
|
if [ ! -d "$TEMP_DIR/repo" ]; then
|
|
echo "Error: Failed to clone repository"
|
|
exit 1
|
|
fi
|
|
|
|
# Find and process skills (subdirectories in the cloned repo)
|
|
SKILLS_FOUND=0
|
|
for skill_path in "$TEMP_DIR/repo/skills"/*/; do
|
|
# Skip if no directories found (glob returns literal pattern if no match)
|
|
[ -d "$skill_path" ] || continue
|
|
|
|
skill_name=$(basename "$skill_path")
|
|
target_skill_path="$TARGET_DIR/$skill_name"
|
|
|
|
# Remove existing skill if present
|
|
if [ -e "$target_skill_path" ]; then
|
|
echo "Removing existing skill: $skill_name"
|
|
rm -rf "$target_skill_path"
|
|
fi
|
|
|
|
# Copy new skill
|
|
echo "Installing skill: $skill_name"
|
|
cp -r "$skill_path" "$target_skill_path"
|
|
|
|
SKILLS_FOUND=$((SKILLS_FOUND + 1))
|
|
done
|
|
|
|
if [ "$SKILLS_FOUND" -eq 0 ]; then
|
|
echo "Warning: No skills found in repository"
|
|
else
|
|
echo "Successfully synchronized $SKILLS_FOUND skill(s) to $TARGET_DIR"
|
|
fi
|