UNPKG

wechatbot-webhook

Version:

给微信里加个 webhook 机器人,支持docker部署

61 lines (49 loc) 1.72 kB
// @ts-nocheck // 给 shell 调用使用 const fs = require('fs') const dotenv = require('dotenv') const path = require('path') const generateToken = require('./lib/generateToken') const sourceFile = path.join(__dirname, './.env.example') const envFilePath = process.env.homeEnvCfg const chalk = require('chalk') // 根据env.example 生成 .env 文件 if (!fs.existsSync(envFilePath)) { // 如果不存在,则从 env.example 复制 fs.copyFileSync(sourceFile, envFilePath) console.log(chalk.grey(`${envFilePath} file created`)) } // 读取 .env 文件内容 const envContent = fs.readFileSync(envFilePath, 'utf-8').split('\n') // 解析 .env 文件内容 const envConfig = dotenv.parse(envContent.join('\n')) // 无配置token,会默认生成一个token if (envConfig.LOCAL_LOGIN_API_TOKEN) return const token = generateToken() console.log( `写入初始化token:${chalk.green(token)} => ${chalk.cyan(envFilePath)} \n` ) envConfig.LOCAL_LOGIN_API_TOKEN = token // 添加或修改键值对 // 生成新的 .env 文件内容,同时保留注释 let newEnv = envContent .map((line) => { if (line.startsWith('#')) { // 保留注释 return line } const [key] = line.split('=') if (envConfig[key] !== undefined) { // 更新已存在的键值对 const updatedLine = `${key}=${envConfig[key]}` delete envConfig[key] // 从 envConfig 中移除已处理的键 return updatedLine } return line }) .join('\n') // 将未在原始 .env 文件中的新键值对添加到文件末尾 for (const [key, value] of Object.entries(envConfig)) { newEnv += `\n${key}=${value}` } // 写入新的 .env 文件内容 fs.writeFileSync(envFilePath, newEnv)