mirror of
https://github.com/bolucat/Archive.git
synced 2026-04-23 00:17:16 +08:00
44 lines
959 B
TypeScript
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()
|
|
}
|