update at 2025-11-04 20:59:23

This commit is contained in:
douboer
2025-11-04 20:59:23 +08:00
parent 39feb2dde5
commit 36c97b0616
4 changed files with 547 additions and 50 deletions

120
deploy.sh
View File

@@ -1,83 +1,103 @@
#!/bin/bash
# Obsidian Vim IM Switch Plugin 一键部署脚本
# 编译并复制插件文件到 Obsidian 插件目录
# Obsidian + Vim plugin one-click deploy script
set -e
set -e # 遇到错误时退出
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
NC='\033[0m'
# 配置
SOURCE_DIR="/Users/gavin/vim-im-switch"
TARGET_DIR="/Users/gavin/myweb/.obsidian/plugins/vim-im-switch"
echo -e "${BLUE}🚀 开始部署 Obsidian Vim IM Switch Plugin...${NC}"
echo -e "${BLUE}🚀 Start deploy...${NC}"
# 检查源目录
if [ ! -d "$SOURCE_DIR" ]; then
echo -e "${RED}源目录不存在: $SOURCE_DIR${NC}"
echo -e "${RED}Source dir not found: $SOURCE_DIR${NC}"
exit 1
fi
# 进入源目录
cd "$SOURCE_DIR"
echo -e "${YELLOW}📁 当前目录: $(pwd)${NC}"
echo -e "${YELLOW}📁 Current: $(pwd)${NC}"
# 编译项目
echo -e "${YELLOW}🔨 开始编译项目...${NC}"
echo -e "${YELLOW}🔨 Build project...${NC}"
if npm run build; then
echo -e "${GREEN}编译成功${NC}"
echo -e "${GREEN}Build success${NC}"
else
echo -e "${RED}编译失败${NC}"
echo -e "${RED}Build failed${NC}"
exit 1
fi
# 检查编译产物(构建产物位于项目根,确保 main.js manifest.json styles.css 可用)
if [ ! -f "main.js" ] || [ ! -f "manifest.json" ] || [ ! -f "styles.css" ]; then
echo -e "${RED}❌ 编译产物缺失: 期待 main.js, manifest.json, styles.css 在项目根目录下${NC}"
ls -la | sed -n '1,200p'
if [ ! -f "main.js" ] && [ ! -f "vim-im-switch-plugin/main.js" ]; then
echo -e "${RED}❌ main.js not found in project or vim-im-switch-plugin/ (build output)${NC}"
exit 1
fi
# 创建目标目录
echo -e "${YELLOW}📂 创建目标目录...${NC}"
echo -e "${YELLOW}📂 Creating target dir...${NC}"
mkdir -p "$TARGET_DIR"
# 复制文件
echo -e "${YELLOW}📋 复制插件文件...${NC}"
echo -e "${YELLOW}📋 Copying plugin files...${NC}"
# 复制必需的文件到 Obsidian 插件目录
cp -f main.js "$TARGET_DIR/"
cp -f manifest.json "$TARGET_DIR/"
cp -f styles.css "$TARGET_DIR/"
echo -e "${GREEN}✅ Obsidian 插件文件复制完成:${NC}"
echo -e " • main.js"
echo -e " • manifest.json"
echo -e " • styles.css"
# 复制 Vim 插件fcitx-osx.vim
echo -e "${YELLOW}📋 复制 Vim 插件...${NC}"
mkdir -p ~/.vim/plugin
if [ -f "fcitx-osx.vim" ]; then
cp -f fcitx-osx.vim ~/.vim/plugin/
echo -e "${GREEN}✅ Vim 插件复制完成:${NC}"
echo -e " • fcitx-osx.vim → ~/.vim/plugin/"
# If build outputs are in vim-im-switch-plugin, prefer that directory
SRC_PLUGIN_DIR="$SOURCE_DIR"
if [ -d "$SOURCE_DIR/vim-im-switch-plugin" ]; then
SRC_PLUGIN_DIR="$SOURCE_DIR/vim-im-switch-plugin"
else
echo -e "${YELLOW}⚠️ 未找到 fcitx-osx.vim跳过 Vim 插件复制(确定文件存在于仓库根)${NC}"
# If build outputs are at project root, copy them into vim-im-switch-plugin for release
mkdir -p "$SOURCE_DIR/vim-im-switch-plugin"
for f in main.js manifest.json styles.css; do
if [ -f "$SOURCE_DIR/$f" ]; then
cp -f "$SOURCE_DIR/$f" "$SOURCE_DIR/vim-im-switch-plugin/"
echo -e "${GREEN}✔ Move $f -> $SOURCE_DIR/vim-im-switch-plugin/${NC}"
fi
done
SRC_PLUGIN_DIR="$SOURCE_DIR/vim-im-switch-plugin"
fi
# 验证文件
echo -e "${YELLOW}🔍 验证复制的文件...${NC}"
ls -la "$TARGET_DIR"
echo -e "${YELLOW}🔍 Using source dir: $SRC_PLUGIN_DIR${NC}"
echo -e "${GREEN}🎉 部署完成!${NC}"
echo -e "${BLUE}📍 Obsidian 插件已部署到: $TARGET_DIR${NC}"
echo -e "${BLUE}📍 Vim 插件已部署到: ~/.vim/plugin/${NC}"
echo -e "${YELLOW}💡 请重启 Obsidian 或重新加载插件以使更改生效${NC}"
echo -e "${YELLOW}💡 Vim 插件将在下次启动 Vim 时自动加载${NC}"
for f in main.js manifest.json styles.css; do
if [ -f "$SRC_PLUGIN_DIR/$f" ]; then
cp -f "$SRC_PLUGIN_DIR/$f" "$TARGET_DIR/"
echo -e "${GREEN}✔ Copied $f -> $TARGET_DIR/${NC}"
else
echo -e "${YELLOW}⚠️ Not found: $SRC_PLUGIN_DIR/$f (skipped)${NC}"
fi
done
echo -e "${GREEN}✅ Obsidian plugin files copied (if available)${NC}"
# Ensure repo-level release directory (vim-im-switch-plugin) contains the built files
RELEASE_DIR="$SOURCE_DIR/vim-im-switch-plugin"
mkdir -p "$RELEASE_DIR"
echo -e "${YELLOW}📦 Updating release dir: $RELEASE_DIR${NC}"
for f in main.js manifest.json styles.css; do
if [ -f "$SOURCE_DIR/$f" ]; then
cp -f "$SOURCE_DIR/$f" "$RELEASE_DIR/"
echo -e "${GREEN}✔ Copied $SOURCE_DIR/$f -> $RELEASE_DIR/${NC}"
else
if [ -f "$RELEASE_DIR/$f" ]; then
echo -e "${YELLOW} Using existing $RELEASE_DIR/$f${NC}"
else
echo -e "${RED}⚠️ Missing build output: $f (not found in project root or $RELEASE_DIR)${NC}"
fi
fi
done
echo -e "${YELLOW}📋 Copying plugin files to Obsidian plugin dir: $TARGET_DIR${NC}"
for f in main.js manifest.json styles.css; do
if [ -f "$RELEASE_DIR/$f" ]; then
cp -f "$RELEASE_DIR/$f" "$TARGET_DIR/"
echo -e "${GREEN}✔ Copied $RELEASE_DIR/$f -> $TARGET_DIR/${NC}"
else
echo -e "${YELLOW}⚠️ Not found in release dir: $RELEASE_DIR/$f (skipped)${NC}"
fi
done
echo -e "${GREEN}🎉 Deploy complete!${NC}"
echo -e " • Obsidian plugin -> $TARGET_DIR"
echo -e " • Release copy -> $RELEASE_DIR"
echo -e "${YELLOW}💡 Restart Obsidian or reload plugin to take effect.${NC}"

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "obsidian-vim-im-switch-plugin",
"name": "Vim Input Method Switch",
"version": "1.0.8",
"minAppVersion": "0.9.12",
"description": "Switch input method with fcitx-remote when Vim keymap is enabled.",
"author": "Yuan Chen",
"authorUrl": "https://github.com/yuanotes",
"isDesktopOnly": true
}

View File

@@ -0,0 +1,2 @@
body {
}