From 6a4924bb16550c896ed503e8f16b597c0208fb18 Mon Sep 17 00:00:00 2001 From: GyDi Date: Sat, 19 Mar 2022 14:04:58 +0800 Subject: [PATCH] chore: update log supports --- UPDATELOG.md | 11 +++++++++++ scripts/publish.mjs | 6 ++++++ scripts/release.mjs | 3 ++- scripts/updatelog.mjs | 44 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 UPDATELOG.md create mode 100644 scripts/updatelog.mjs diff --git a/UPDATELOG.md b/UPDATELOG.md new file mode 100644 index 0000000..6083172 --- /dev/null +++ b/UPDATELOG.md @@ -0,0 +1,11 @@ +## v0.0.23 + +### Features + +- i18n supports +- Remote profile User Agent supports + +### Bug Fixes + +- clash config file case ignore +- clash `external-controller` only port diff --git a/scripts/publish.mjs b/scripts/publish.mjs index 6c2e471..523ad18 100644 --- a/scripts/publish.mjs +++ b/scripts/publish.mjs @@ -1,9 +1,11 @@ import fs from "fs-extra"; import { createRequire } from "module"; import { execSync } from "child_process"; +import { resolveUpdateLog } from "./updatelog.mjs"; const require = createRequire(import.meta.url); +// publish async function resolvePublish() { const flag = process.argv[2] ?? "patch"; const packageJson = require("../package.json"); @@ -26,6 +28,10 @@ async function resolvePublish() { packageJson.version = nextVersion; tauriJson.package.version = nextVersion; + // 发布更新前先写更新日志 + const nextTag = `v${nextVersion}`; + await resolveUpdateLog(nextTag); + await fs.writeFile( "./package.json", JSON.stringify(packageJson, undefined, 2) diff --git a/scripts/release.mjs b/scripts/release.mjs index f2ffa21..8d12c32 100644 --- a/scripts/release.mjs +++ b/scripts/release.mjs @@ -1,5 +1,6 @@ import fetch from "node-fetch"; import { getOctokit, context } from "@actions/github"; +import { resolveUpdateLog } from "./updatelog.mjs"; const UPDATE_TAG_NAME = "updater"; const UPDATE_JSON_FILE = "update.json"; @@ -34,7 +35,7 @@ async function resolveRelease() { const updateData = { name: tag.name, - notes: latestRelease.body, // use the release body directly + notes: await resolveUpdateLog(tag.name), // use updatelog.md pub_date: new Date().toISOString(), platforms: { win64: { signature: "", url: "" }, diff --git a/scripts/updatelog.mjs b/scripts/updatelog.mjs new file mode 100644 index 0000000..fae7f62 --- /dev/null +++ b/scripts/updatelog.mjs @@ -0,0 +1,44 @@ +import fs from "fs-extra"; +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 (!(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 = {}; + 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(); +}