feat(skills): add codex compatibility
This commit is contained in:
+72
-5
@@ -1,21 +1,64 @@
|
||||
#!/usr/bin/env bash
|
||||
# ============================================================
|
||||
# spec-coding-skills 安装/更新脚本
|
||||
# 用法: bash <(curl -sL <raw-url>/install.sh)
|
||||
# 或: bash install.sh [目标目录]
|
||||
# 用法: bash <(curl -sL <raw-url>/install.sh) [codex|claude]
|
||||
# 或: bash install.sh [codex|claude|目标目录]
|
||||
# ============================================================
|
||||
set -euo pipefail
|
||||
|
||||
REPO_URL="https://git.internal.intelligrow.cn/zhangfucai/spec-coding-skills.git"
|
||||
SKILLS_SRC=".claude/skills"
|
||||
DEFAULT_TARGET=".claude/skills"
|
||||
DEFAULT_MODE="codex"
|
||||
|
||||
GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; NC='\033[0m'
|
||||
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
|
||||
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
||||
log_title() { echo -e "${CYAN}$1${NC}"; }
|
||||
|
||||
TARGET="${1:-$DEFAULT_TARGET}"
|
||||
MODE=""
|
||||
TARGET=""
|
||||
SKILLS_SRC=""
|
||||
GUIDE_SRC=""
|
||||
GUIDE_DST=""
|
||||
|
||||
resolve_layout() {
|
||||
local input="$1"
|
||||
|
||||
case "$input" in
|
||||
""|codex)
|
||||
MODE="codex"
|
||||
TARGET=".codex/skills"
|
||||
SKILLS_SRC=".codex/skills"
|
||||
GUIDE_SRC="AGENTS.md.template"
|
||||
GUIDE_DST="AGENTS.md"
|
||||
;;
|
||||
claude)
|
||||
MODE="claude"
|
||||
TARGET=".claude/skills"
|
||||
SKILLS_SRC=".claude/skills"
|
||||
GUIDE_SRC="CLAUDE.md.template"
|
||||
GUIDE_DST="CLAUDE.md"
|
||||
;;
|
||||
*)
|
||||
TARGET="$input"
|
||||
case "$TARGET" in
|
||||
*".claude/skills"*)
|
||||
MODE="claude"
|
||||
SKILLS_SRC=".claude/skills"
|
||||
GUIDE_SRC="CLAUDE.md.template"
|
||||
GUIDE_DST="CLAUDE.md"
|
||||
;;
|
||||
*)
|
||||
MODE="codex"
|
||||
SKILLS_SRC=".codex/skills"
|
||||
GUIDE_SRC="AGENTS.md.template"
|
||||
GUIDE_DST="AGENTS.md"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
resolve_layout "${1:-$DEFAULT_MODE}"
|
||||
TMP_DIR=$(mktemp -d)
|
||||
trap "rm -rf $TMP_DIR" EXIT
|
||||
|
||||
@@ -27,6 +70,12 @@ git clone --depth 1 --quiet "$REPO_URL" "$TMP_DIR"
|
||||
|
||||
VERSION=$(git -C "$TMP_DIR" describe --tags --always 2>/dev/null || git -C "$TMP_DIR" rev-parse --short HEAD)
|
||||
log_info "版本: $VERSION"
|
||||
log_info "模式: $MODE"
|
||||
|
||||
if [ ! -d "$TMP_DIR/$SKILLS_SRC" ]; then
|
||||
log_warn "上游仓库中不存在技能目录: $SKILLS_SRC"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ---------- 统计变更 ----------
|
||||
NEW=0
|
||||
@@ -85,10 +134,28 @@ for tpl_file in "$TMP_DIR/$SKILLS_SRC"/*.template "$TMP_DIR/$SKILLS_SRC"/*.md; d
|
||||
fi
|
||||
done
|
||||
|
||||
# 安装项目根目录引导文件
|
||||
guide_src_path="$TMP_DIR/$GUIDE_SRC"
|
||||
if [ -f "$guide_src_path" ]; then
|
||||
if [ ! -f "$GUIDE_DST" ]; then
|
||||
cp "$guide_src_path" "$GUIDE_DST"
|
||||
log_info "✨ 新增项目引导: $GUIDE_DST"
|
||||
NEW=$((NEW + 1))
|
||||
elif ! diff -q "$guide_src_path" "$GUIDE_DST" >/dev/null 2>&1; then
|
||||
cp "$GUIDE_DST" "$GUIDE_DST.local.bak"
|
||||
cp "$guide_src_path" "$GUIDE_DST"
|
||||
log_warn "🔄 更新项目引导: $GUIDE_DST (本地版本已备份为 ${GUIDE_DST}.local.bak)"
|
||||
UPDATED=$((UPDATED + 1))
|
||||
else
|
||||
SKIPPED=$((SKIPPED + 1))
|
||||
fi
|
||||
fi
|
||||
|
||||
# ---------- 汇总 ----------
|
||||
echo ""
|
||||
log_title "✅ 完成!"
|
||||
echo ""
|
||||
echo " 🧭 模式: $MODE"
|
||||
echo " 📁 目标目录: $TARGET"
|
||||
echo " 📦 版本: $VERSION"
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user