import fs from "fs" import _ from "lodash" import cfg from "../../../lib/config/config.js" const Plugin_Path = `${process.cwd()}/plugins/yenai-plugin` const README_path = `${Plugin_Path}/README.md` const CHANGELOG_path = `${Plugin_Path}/CHANGELOG.md` const yunzai_ver = `v${cfg.package.version}` let logs = {} let changelogs = [] let currentVersion let versionCount = 2 const getLine = function(line) { line = line.replace(/(^\s*\*|\r)/g, "") line = line.replace(/\s*`([^`]+`)/g, "$1") line = line.replace(/`\s*/g, "") line = line.replace(/\s*\*\*([^*]+\*\*)/g, "$1") line = line.replace(/\*\*\s*/g, "") line = line.replace(/ⁿᵉʷ/g, "") return line } try { if (fs.existsSync(CHANGELOG_path)) { logs = fs.readFileSync(CHANGELOG_path, "utf8") || "" logs = logs.replace(/\t/g, " ").split("\n") let temp = {} let lastLine = {} _.forEach(logs, (line) => { if (versionCount <= -1) { return false } let versionRet = /^#\s*([0-9a-zA-Z\\.~\s]+?)\s*$/.exec(line.trim()) if (versionRet && versionRet[1]) { let v = versionRet[1].trim() if (!currentVersion) { currentVersion = v } else { changelogs.push(temp) if (/0\s*$/.test(v) && versionCount > 0) { // versionCount = 0 versionCount-- } else { versionCount-- } } temp = { version: v, logs: [] } } else { if (!line.trim()) { return } if (/^\*/.test(line)) { lastLine = { title: getLine(line), logs: [] } if (!temp.logs) { temp = { version: line, logs: [] } } temp.logs.push(lastLine) } else if (/^\s{2,}\*/.test(line)) { lastLine.logs.push(getLine(line)) } } }) } } catch (e) { logger.error(e) // do nth } try { if (fs.existsSync(README_path)) { let README = fs.readFileSync(README_path, "utf8") || "" let reg = /版本:(.*)/.exec(README) if (reg) { currentVersion = reg[1] } } } catch (err) { } let yunzaiName = cfg.package.name if (yunzaiName == "miao-yunzai") { yunzaiName = "Miao-Yunzai" } else if (yunzaiName == "yunzai") { yunzaiName = "Yunzai-Bot" } else if (yunzaiName == "trss-yunzai") { yunzaiName = "TRSS-Yunzai" } else { yunzaiName = _.capitalize(yunzaiName) } let Version = { get ver() { return currentVersion }, get name() { return yunzaiName }, get yunzai() { return yunzai_ver }, get logs() { return changelogs } } export default Version