#!/usr/bin/env bash
set -euo pipefail
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BACKUP_DIR="$REPO_ROOT/llm-backup"
FILES=(
"ai-agent/entry/src/main/ets/pages/local-config.ts"
"toolkit/ascf-toolkit/local-llm-config.json"
"demos/android-demo/local.properties"
)
die() {
echo "错误: $*" >&2
exit 1
}
cmd_backup() {
mkdir -p "$BACKUP_DIR"
local n=0
for rel in "${FILES[@]}"; do
local src="$REPO_ROOT/$rel"
if [ -f "$src" ]; then
mkdir -p "$BACKUP_DIR/$(dirname "$rel")"
cp "$src" "$BACKUP_DIR/$rel"
echo "已备份: $rel"
n=$((n + 1))
else
echo "[警告] 本地不存在,跳过: $rel"
fi
done
echo "==> 备份完成 -> $BACKUP_DIR(已 gitignore,勿提交)"
}
cmd_restore() {
[ -d "$BACKUP_DIR" ] || die "备份不存在: $BACKUP_DIR(请先 ./llm-config.sh backup,或从 zip 解压)"
local n=0
for rel in "${FILES[@]}"; do
local src="$BACKUP_DIR/$rel"
if [ -f "$src" ]; then
mkdir -p "$REPO_ROOT/$(dirname "$rel")"
cp "$src" "$REPO_ROOT/$rel"
echo "已恢复: $rel"
n=$((n + 1))
else
echo "[警告] 备份中没有此文件,跳过: $rel"
fi
done
echo "==> 恢复完成。这些文件已 gitignore,请勿提交(见 CLAUDE.md)"
}
case "${1:-}" in
backup) cmd_backup ;;
restore) cmd_restore ;;
*) echo "用法: $0 {backup|restore}" >&2; exit 1 ;;
esac