移除技能
This commit is contained in:
134
publish.sh
Normal file
134
publish.sh
Normal file
@@ -0,0 +1,134 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Skill 发布脚本
|
||||
#
|
||||
# 使用方式:
|
||||
# ./publish.sh <skill-name>
|
||||
#
|
||||
# 示例:
|
||||
# ./publish.sh lyxy-kb
|
||||
# ./publish.sh lyxy-reader-office
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
# 获取脚本所在目录
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
# 配置
|
||||
TARGET_REPO_URL="https://github.com/lanyuanxiaoyao/skills.git"
|
||||
TEMP_DIR_BASE="${TMPDIR:-/tmp}/lyxy-skill-publish"
|
||||
|
||||
# 颜色输出
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 打印信息
|
||||
info() {
|
||||
echo -e "${GREEN}>>>${NC} $1"
|
||||
}
|
||||
|
||||
error() {
|
||||
echo -e "${RED}错误:${NC} $1"
|
||||
}
|
||||
|
||||
# 显示使用说明
|
||||
show_usage() {
|
||||
echo "使用方式:"
|
||||
echo " $0 <skill-name>"
|
||||
echo ""
|
||||
echo "可用的 skills:"
|
||||
for dir in skills/*/; do
|
||||
if [ -d "$dir" ]; then
|
||||
name="$(basename "$dir")"
|
||||
echo " - $name"
|
||||
fi
|
||||
done
|
||||
echo ""
|
||||
echo "示例:"
|
||||
echo " $0 lyxy-kb"
|
||||
echo " $0 lyxy-reader-office"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 检查参数
|
||||
if [ $# -eq 0 ]; then
|
||||
error "缺少 skill 名称参数"
|
||||
show_usage
|
||||
fi
|
||||
|
||||
SKILL_NAME="$1"
|
||||
SKILL_DIR="$SCRIPT_DIR/skills/$SKILL_NAME"
|
||||
TARGET_PATH="skills/$SKILL_NAME"
|
||||
|
||||
# 检查 skill 目录是否存在
|
||||
if [ ! -d "$SKILL_DIR" ]; then
|
||||
error "Skill 目录不存在: $SKILL_DIR"
|
||||
echo ""
|
||||
echo "可用的 skills:"
|
||||
for dir in skills/*/; do
|
||||
if [ -d "$dir" ]; then
|
||||
name="$(basename "$dir")"
|
||||
echo " - $name"
|
||||
fi
|
||||
done
|
||||
exit 1
|
||||
fi
|
||||
|
||||
info "发布 Skill: $SKILL_NAME"
|
||||
info "目标仓库: $TARGET_REPO_URL"
|
||||
info "目标路径: $TARGET_PATH"
|
||||
echo ""
|
||||
|
||||
# 创建临时目录
|
||||
TIMESTAMP=$(date +%s)
|
||||
TEMP_DIR="$TEMP_DIR_BASE-$TIMESTAMP"
|
||||
mkdir -p "$TEMP_DIR"
|
||||
|
||||
# 清理函数
|
||||
cleanup() {
|
||||
if [ -d "$TEMP_DIR" ]; then
|
||||
rm -rf "$TEMP_DIR"
|
||||
fi
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
# Clone 仓库
|
||||
info "[1/4] Clone 仓库..."
|
||||
REPO_DIR="$TEMP_DIR/skills-repo"
|
||||
git clone --depth 1 "$TARGET_REPO_URL" "$REPO_DIR"
|
||||
|
||||
# 清空目标目录
|
||||
info "[2/4] 清空目标目录..."
|
||||
TARGET_DIR="$REPO_DIR/$TARGET_PATH"
|
||||
if [ -d "$TARGET_DIR" ]; then
|
||||
rm -rf "$TARGET_DIR"
|
||||
fi
|
||||
mkdir -p "$TARGET_DIR"
|
||||
|
||||
# 复制内容
|
||||
info "[3/4] 复制 Skill 文件..."
|
||||
# 复制除了 __pycache__ 之外的所有内容
|
||||
for item in "$SKILL_DIR"/*; do
|
||||
basename_item="$(basename "$item")"
|
||||
# 跳过 __pycache__
|
||||
if [ "$basename_item" = "__pycache__" ]; then
|
||||
continue
|
||||
fi
|
||||
if [ -d "$item" ]; then
|
||||
cp -r "$item" "$TARGET_DIR/"
|
||||
else
|
||||
cp "$item" "$TARGET_DIR/"
|
||||
fi
|
||||
done
|
||||
|
||||
# 提交并推送
|
||||
info "[4/4] 提交并推送到 GitHub..."
|
||||
cd "$REPO_DIR"
|
||||
git add .
|
||||
git commit -m "publish: $SKILL_NAME"
|
||||
git push
|
||||
|
||||
info "发布成功!"
|
||||
Reference in New Issue
Block a user