mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2024-11-16 11:42:21 +08:00
eefeec7f0a
nb!
46 lines
933 B
JavaScript
46 lines
933 B
JavaScript
import fs from "fs";
|
|
import fsp from "fs/promises";
|
|
import path from "path";
|
|
|
|
const UPDATE_LOG = "UPDATELOG.md";
|
|
|
|
// parse the UPDATELOG.md
|
|
export async function resolveUpdateLog(tag) {
|
|
const cwd = process.cwd();
|
|
|
|
const reTitle = /^## v[\d\.]+/;
|
|
const reEnd = /^---/;
|
|
|
|
const file = path.join(cwd, UPDATE_LOG);
|
|
|
|
if (!fs.existsSync(file)) {
|
|
throw new Error("could not found UPDATELOG.md");
|
|
}
|
|
|
|
const data = await fsp.readFile(file, "utf-8");
|
|
|
|
const map = {};
|
|
let p = "";
|
|
|
|
data.split("\n").forEach((line) => {
|
|
if (reTitle.test(line)) {
|
|
p = line.slice(3).trim();
|
|
if (!map[p]) {
|
|
map[p] = [];
|
|
} else {
|
|
throw new Error(`Tag ${p} dup`);
|
|
}
|
|
} else if (reEnd.test(line)) {
|
|
p = "";
|
|
} else if (p) {
|
|
map[p].push(line);
|
|
}
|
|
});
|
|
|
|
if (!map[tag]) {
|
|
throw new Error(`could not found "${tag}" in UPDATELOG.md`);
|
|
}
|
|
|
|
return map[tag].join("\n").trim();
|
|
}
|