import fs from 'fs'; import lodash from 'lodash'; import path from 'path'; import { pluginPath } from './path.js'; const _logPath = path.join(pluginPath, 'CHANGELOG.md'); let logs = {}; let changelogs = []; let currentVersion; let versionCount = 4; let packageJson = JSON.parse(fs.readFileSync('package.json', 'utf8')); 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(_logPath)) { logs = fs.readFileSync(_logPath, 'utf8') || ''; logs = logs.split('\n'); let temp = {}; let lastLine = {}; lodash.forEach(logs, line => { if (versionCount <= -1) { return false; } let versionRet = /^#\s*([0-9a-zA-Z\\.~\s]+?)\s*$/.exec(line); 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; } else { versionCount--; } } temp = { version: v, logs: [], }; } else { if (!line.trim()) { return; } if (/^\*/.test(line)) { lastLine = { title: getLine(line), logs: [], }; temp.logs.push(lastLine); } else if (/^\s{2,}\*/.test(line)) { lastLine.logs.push(getLine(line)); } } }); } } catch (e) { // void error } const yunzaiVersion = packageJson.version; const isV3 = yunzaiVersion[0] === '3'; let isMiao = false; let name = 'Yunzai-Bot'; if (packageJson.name === 'miao-yunzai') { isMiao = true; name = 'Miao-Yunzai'; } else if (packageJson.name === 'trss-yunzai') { isMiao = true; name = 'TRSS-Yunzai'; } const version = { isV3, isMiao, name, get version() { return currentVersion; }, get yunzai() { return yunzaiVersion; }, get changelogs() { return changelogs; }, }; export default version;