#!/bin/bash # Function to detect OS get_os() { case "$(uname -s)" in Darwin) echo "macos" ;; Linux) echo "linux" ;; CYGWIN*|MINGW32*|MSYS*|MINGW*) echo "windows" ;; *) echo "unknown" ;; esac } # 1. 提取当前目录名作为项目名 OS=$(get_os) if [ "$OS" = "windows" ]; then # Windows (Git Bash or similar) PROJECT_NAME=$(basename "$PWD") else # macOS/Linux PROJECT_NAME=$(basename "$PWD") fi echo "检测到的项目名: $PROJECT_NAME" # 2. 替换 package.json 中的 name,需要考虑跨平台兼容性 if [ "$OS" = "windows" ]; then # Windows: 使用 sed with backup and proper escapes sed -i.bak "s/\"name\": \"[^\"]*\"/\"name\": \"$PROJECT_NAME\"/g" package.json && rm package.json.bak else # macOS/Linux: sed in-place sed -i.bak "s/\"name\": \"[^\"]*\"/\"name\": \"$PROJECT_NAME\"/g" package.json && rm package.json.bak fi # 3. 询问 kintone 域名、账号、密码 echo "" echo "请输入 kintone 上传配置 (按回车使用默认值):" read -p "域名 (默认: https://alicorn.cybozu.com): " base_url base_url=${base_url:-"https://alicorn.cybozu.com"} read -p "用户名 (默认: maxz): " username username=${username:-"maxz"} read -s -p "密码 (默认: 7ld7i8vd): " password password=${password:-"7ld7i8vd"} echo "" # 更新 package.json 中的 scripts.upload AUTH_CMD="kintone-plugin-uploader --base-url $base_url --username $username --password $password dist/plugin.zip" if [ "$OS" = "windows" ]; then AUTH_CMD=$(echo "$AUTH_CMD" | sed 's/\$/$$/g') fi # Escape special characters for sed AUTH_CMD_ESC=$(echo "$AUTH_CMD" | sed 's/[\/&]/\\&/g') if [ "$OS" = "windows" ]; then sed -i.bak "s/kintone-plugin-uploader.*dist\/plugin\.zip/$AUTH_CMD_ESC/g" package.json && rm package.json.bak else sed -i.bak "s/kintone-plugin-uploader.*dist\/plugin\.zip/$AUTH_CMD_ESC/g" package.json && rm package.json.bak fi # 4. 删除自身 (可选,但推荐) read -p "是否删除此脚本文件 (y/N): " delete_self if [[ $delete_self =~ ^[Yy]$ ]]; then rm "$0" echo "脚本已删除" fi # 5. 提醒用户下一步操作 echo "" echo "初始化完成!" echo "" echo "下一步操作:" echo "1. 运行 'npm install' 来安装依赖" echo "2. 修改 'src/manifest.json' 中的插件描述" echo "3. 使用 'npm run build-upload' 构建并上传项目" echo "" echo "如需帮助,请查看 README.md"