#!/bin/bash set -e # 出错立即退出 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" # 1. 构建 MODE="$1" BUILD_CMD=(npm run build) if [[ "$MODE" == "obf" ]]; then BUILD_CMD=(npm run build:obf) echo "🏗️ 开始构建(启用混淆)..." else echo "🏗️ 开始构建(不启用混淆)..." fi if "${BUILD_CMD[@]}"; then echo "✅ 构建成功" echo else echo "❌ 构建失败,脚本终止" echo exit 1 fi # 2. 目标目录 PLUGIN_DIR=~/myweb/.obsidian/plugins/note2any FILES=("main.js" "styles.css" "manifest.json") # 3. 遍历文件,逐一备份并覆盖 for FILE in "${FILES[@]}"; do TARGET="$PLUGIN_DIR/$FILE" BACKUP="$PLUGIN_DIR/backup/$FILE.bk" if [ -f "$TARGET" ]; then mkdir -p "$(dirname "$BACKUP")" cp -f "$TARGET" "$BACKUP" echo "💾 已备份 $TARGET -> $BACKUP" fi if [ -f "$FILE" ]; then cp -f "$FILE" "$TARGET" echo "📂 已更新 $TARGET" else echo "⚠️ 源文件 $FILE 不存在,跳过" fi done # 4. 覆盖复制 assets 目录(静默) if [ -d "assets" ]; then mkdir -p "$PLUGIN_DIR/assets" rsync -a --delete assets/ "$PLUGIN_DIR/assets/" >/dev/null echo "🎨 已同步 assets -> $PLUGIN_DIR/assets/" echo else echo "⚠️ 源目录 assets 不存在,跳过" echo fi # 5. server 如有变动则同步远端 SERVER_STATUS="$(git status --porcelain --untracked-files=all -- server 2>/dev/null || true)" if [[ -n "$SERVER_STATUS" ]]; then echo "🚀 检测到 server 目录有变动,开始更新远端..." bash "$SCRIPT_DIR/server/deploy.sh" echo "✅ server 远端更新完成" echo else echo "ℹ️ server 无变动,跳过远端更新" echo fi echo "✅ 部署完成!" echo