auto-sync: 2026-05-22 18:25:47
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
#!/usr/bin/env bash
|
||||
# reset-data.sh — 清空 moziplus v2 运行数据(保留配置)
|
||||
set -euo pipefail
|
||||
|
||||
TARGET_DIR="$HOME/.sanguo_projects/sanguo_moziplus_v2"
|
||||
PM2_NAME="sanguo-moziplus-v2"
|
||||
CONFIRM=false
|
||||
PROJECT_FILTER=""
|
||||
|
||||
usage() {
|
||||
echo "Usage: $0 [options]"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " --target=DIR 安装目标目录"
|
||||
echo " --project=NAME 只清指定项目数据(可多次使用,逗号分隔)"
|
||||
echo " --confirm 确认执行(必须传)"
|
||||
echo " -h, --help 显示帮助"
|
||||
echo ""
|
||||
echo "Examples:"
|
||||
echo " $0 --confirm # 清空所有数据"
|
||||
echo " $0 --project=demo --confirm # 只清 demo 项目"
|
||||
echo " $0 --project=demo,test --confirm # 清 demo 和 test 项目"
|
||||
exit 0
|
||||
}
|
||||
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--target=*) TARGET_DIR="${arg#*=}" ;;
|
||||
--project=*) PROJECT_FILTER="${arg#*=}" ;;
|
||||
--confirm) CONFIRM=true ;;
|
||||
-h|--help) usage ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ "$CONFIRM" = false ]; then
|
||||
echo "⚠️ This will delete running data! Use --confirm to proceed."
|
||||
echo ""
|
||||
if [ -n "$PROJECT_FILTER" ]; then
|
||||
echo " Would delete data for project(s): $PROJECT_FILTER"
|
||||
else
|
||||
echo " Would delete ALL project data (keeping config/)"
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DATA_DIR="$TARGET_DIR/data"
|
||||
|
||||
if [ ! -d "$DATA_DIR" ]; then
|
||||
echo "❌ Data directory not found: $DATA_DIR" && exit 1
|
||||
fi
|
||||
|
||||
# ── 停服务 ──
|
||||
echo "🛑 Stopping $PM2_NAME..."
|
||||
pm2 stop "$PM2_NAME" 2>/dev/null || true
|
||||
|
||||
# ── 清数据 ──
|
||||
echo ""
|
||||
if [ -n "$PROJECT_FILTER" ]; then
|
||||
# 指定项目
|
||||
IFS=',' read -ra PROJECTS <<< "$PROJECT_FILTER"
|
||||
for proj in "${PROJECTS[@]}"; do
|
||||
proj=$(echo "$proj" | xargs) # trim
|
||||
PROJ_DIR="$DATA_DIR/$proj"
|
||||
if [ -d "$PROJ_DIR" ]; then
|
||||
echo "🗑️ Deleting $proj data..."
|
||||
rm -rf "$PROJ_DIR"
|
||||
else
|
||||
echo "⚠️ Project dir not found: $PROJ_DIR (skipped)"
|
||||
fi
|
||||
done
|
||||
else
|
||||
# 清空所有项目数据
|
||||
echo "🗑️ Deleting all project data..."
|
||||
find "$DATA_DIR" -mindepth 1 -maxdepth 1 -type d ! -name '_registry*' -exec rm -rf {} +
|
||||
# 清 registry.db(会自动重建)
|
||||
rm -f "$DATA_DIR/registry.db" "$DATA_DIR/registry.db-shm" "$DATA_DIR/registry.db-wal"
|
||||
fi
|
||||
|
||||
# ── 清 inbox 和 logs ──
|
||||
echo "🗑️ Cleaning inbox and logs..."
|
||||
rm -f "$TARGET_DIR/inbox/"*.jsonl 2>/dev/null || true
|
||||
rm -f "$TARGET_DIR/logs/"* 2>/dev/null || true
|
||||
|
||||
# ── 重启服务 ──
|
||||
echo ""
|
||||
echo "▶️ Starting $PM2_NAME..."
|
||||
pm2 start "$PM2_NAME"
|
||||
|
||||
# ── 完成 ──
|
||||
echo ""
|
||||
if [ -n "$PROJECT_FILTER" ]; then
|
||||
echo "✅ Project data reset: $PROJECT_FILTER"
|
||||
else
|
||||
echo "✅ All data reset (config preserved)"
|
||||
fi
|
||||
echo " URL: http://localhost:8083/"
|
||||
Reference in New Issue
Block a user