update at 2025-11-04 20:59:23
This commit is contained in:
120
deploy.sh
120
deploy.sh
@@ -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}"
|
||||
|
||||
465
vim-im-switch-plugin/main.js
Normal file
465
vim-im-switch-plugin/main.js
Normal file
File diff suppressed because one or more lines are too long
10
vim-im-switch-plugin/manifest.json
Normal file
10
vim-im-switch-plugin/manifest.json
Normal 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
|
||||
}
|
||||
2
vim-im-switch-plugin/styles.css
Normal file
2
vim-im-switch-plugin/styles.css
Normal file
@@ -0,0 +1,2 @@
|
||||
body {
|
||||
}
|
||||
Reference in New Issue
Block a user