refactor: 通用技能按类别拆分为独立目录
skills/ → skills-dev(9), skills-req(10), skills-ops(4), skills-integration(8), skills-biz(4), skills-workflow(7) generate-marketplace.py 改为自动扫描所有 skills-* 目录。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
142
skills-req/req-plugin/update-siyuan-release.sh
Executable file
142
skills-req/req-plugin/update-siyuan-release.sh
Executable file
@@ -0,0 +1,142 @@
|
||||
#!/bin/bash
|
||||
# REQ 发布记录自动更新脚本
|
||||
# 用于在发布完成后自动更新思源笔记中的发布记录
|
||||
|
||||
# 思源笔记配置
|
||||
SIYUAN_URL="${SIYUAN_URL:-http://100.118.62.18:6806}"
|
||||
SIYUAN_TOKEN="${SIYUAN_TOKEN:-nfnycjb1g8vbexb2}"
|
||||
|
||||
# 使用方法
|
||||
usage() {
|
||||
echo "Usage: $0 -r <REQ-ID> -d <doc-id> [-v <version>] [-e <env>] [-s <status>]"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -r REQ-ID 需求编号 (如 REQ-2026-0007)"
|
||||
echo " -d doc-id 思源笔记文档 ID"
|
||||
echo " -v version 发布版本号 (默认: v1.0.0)"
|
||||
echo " -e env 发布环境 (默认: production)"
|
||||
echo " -s status 发布状态: success|failed (默认: success)"
|
||||
echo " -h 显示帮助"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 解析参数
|
||||
REQ_ID=""
|
||||
DOC_ID=""
|
||||
VERSION="v1.0.0"
|
||||
ENVIRONMENT="production"
|
||||
STATUS="success"
|
||||
|
||||
while getopts "r:d:v:e:s:h" opt; do
|
||||
case $opt in
|
||||
r) REQ_ID="$OPTARG" ;;
|
||||
d) DOC_ID="$OPTARG" ;;
|
||||
v) VERSION="$OPTARG" ;;
|
||||
e) ENVIRONMENT="$OPTARG" ;;
|
||||
s) STATUS="$OPTARG" ;;
|
||||
h) usage ;;
|
||||
*) usage ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# 验证必需参数
|
||||
if [ -z "$REQ_ID" ] || [ -z "$DOC_ID" ]; then
|
||||
echo "Error: -r 和 -d 参数是必需的"
|
||||
usage
|
||||
fi
|
||||
|
||||
# 获取当前时间
|
||||
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
|
||||
DATE=$(date "+%Y-%m-%d")
|
||||
|
||||
# 状态显示
|
||||
if [ "$STATUS" = "success" ]; then
|
||||
STATUS_ICON="✅"
|
||||
STATUS_TEXT="已发布"
|
||||
else
|
||||
STATUS_ICON="❌"
|
||||
STATUS_TEXT="发布失败"
|
||||
fi
|
||||
|
||||
# 生成追加内容
|
||||
APPEND_CONTENT=$(cat <<EOF
|
||||
|
||||
---
|
||||
|
||||
## 发布记录更新 - $TIMESTAMP
|
||||
|
||||
| 项目 | 内容 |
|
||||
|------|------|
|
||||
| 发布版本 | $VERSION |
|
||||
| 发布环境 | $ENVIRONMENT |
|
||||
| 发布时间 | $TIMESTAMP |
|
||||
| 发布状态 | $STATUS_ICON $STATUS_TEXT |
|
||||
|
||||
### 自动化流程执行记录
|
||||
|
||||
- $STATUS_ICON 代码构建完成
|
||||
- $STATUS_ICON 服务部署完成
|
||||
- $STATUS_ICON 健康检查通过
|
||||
- $STATUS_ICON 邮件通知已发送
|
||||
|
||||
> 此记录由 REQ 需求管理系统自动生成
|
||||
|
||||
EOF
|
||||
)
|
||||
|
||||
# 创建临时 JSON 文件
|
||||
TMP_FILE=$(mktemp)
|
||||
|
||||
# 首先获取现有文档内容
|
||||
echo "正在获取文档内容..."
|
||||
EXISTING_CONTENT=$(curl -s -X POST "$SIYUAN_URL/api/block/getBlockKramdown" \
|
||||
-H "Authorization: Token $SIYUAN_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"id\": \"$DOC_ID\"}" | jq -r '.data.kramdown // ""')
|
||||
|
||||
if [ -z "$EXISTING_CONTENT" ]; then
|
||||
echo "Warning: 无法获取现有文档内容,将创建新内容"
|
||||
EXISTING_CONTENT="# 发布记录\n\n## 文档信息\n\n| 属性 | 值 |\n|------|----|\n| 需求编号 | $REQ_ID |"
|
||||
fi
|
||||
|
||||
# 追加新内容
|
||||
NEW_CONTENT="${EXISTING_CONTENT}${APPEND_CONTENT}"
|
||||
|
||||
# 转义特殊字符用于 JSON
|
||||
ESCAPED_CONTENT=$(echo "$NEW_CONTENT" | jq -Rs '.')
|
||||
|
||||
# 创建更新请求 JSON
|
||||
cat > "$TMP_FILE" <<EOF
|
||||
{
|
||||
"id": "$DOC_ID",
|
||||
"dataType": "markdown",
|
||||
"data": $ESCAPED_CONTENT
|
||||
}
|
||||
EOF
|
||||
|
||||
# 更新文档
|
||||
echo "正在更新思源笔记文档..."
|
||||
RESPONSE=$(curl -s -X POST "$SIYUAN_URL/api/block/updateBlock" \
|
||||
-H "Authorization: Token $SIYUAN_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d @"$TMP_FILE")
|
||||
|
||||
# 清理临时文件
|
||||
rm -f "$TMP_FILE"
|
||||
|
||||
# 检查结果
|
||||
CODE=$(echo "$RESPONSE" | jq -r '.code')
|
||||
|
||||
if [ "$CODE" = "0" ]; then
|
||||
echo "发布记录更新成功"
|
||||
echo " 需求: $REQ_ID"
|
||||
echo " 文档 ID: $DOC_ID"
|
||||
echo " 版本: $VERSION"
|
||||
echo " 环境: $ENVIRONMENT"
|
||||
echo " 状态: $STATUS_TEXT"
|
||||
exit 0
|
||||
else
|
||||
MSG=$(echo "$RESPONSE" | jq -r '.msg')
|
||||
echo "发布记录更新失败: $MSG"
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user