Files
Archive/clash-nyanpasu/scripts/updatelog.ts
T
2024-12-17 19:39:40 +01:00

44 lines
959 B
TypeScript

import path from 'path'
import fs from 'fs-extra'
import { cwd } from './utils/env'
const UPDATE_LOG = 'UPDATELOG.md'
// parse the UPDATELOG.md
export async function resolveUpdateLog(tag: string) {
const reTitle = /^## v[\d.]+/
const reEnd = /^---/
const file = path.join(cwd, UPDATE_LOG)
if (!(await fs.pathExists(file))) {
throw new Error('could not found UPDATELOG.md')
}
const data = await fs.readFile(file).then((d) => d.toString('utf8'))
const map = {} as Record<string, string[]>
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()
}