From b99bc7fcd1e695f33978307f5eea853e07a84154 Mon Sep 17 00:00:00 2001 From: Tunglies Date: Tue, 25 Mar 2025 00:23:19 +0800 Subject: [PATCH] feat: add default update log resolution and improve error handling --- scripts/updatelog.mjs | 39 +++++++++++++++++++++++++++++++++++++++ scripts/updater.mjs | 6 +++--- src-tauri/tauri.conf.json | 0 3 files changed, 42 insertions(+), 3 deletions(-) mode change 100755 => 100644 src-tauri/tauri.conf.json diff --git a/scripts/updatelog.mjs b/scripts/updatelog.mjs index 914098cb..9c0979dd 100644 --- a/scripts/updatelog.mjs +++ b/scripts/updatelog.mjs @@ -43,3 +43,42 @@ export async function resolveUpdateLog(tag) { return map[tag].join("\n").trim(); } + +export async function resolveUpdateLogDefault() { + const cwd = process.cwd(); + 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 reTitle = /^## v[\d\.]+/; + const reEnd = /^---/; + + let isCapturing = false; + let content = []; + let firstTag = ""; + + for (const line of data.split("\n")) { + if (reTitle.test(line) && !isCapturing) { + isCapturing = true; + firstTag = line.slice(3).trim(); + continue; + } + + if (isCapturing) { + if (reEnd.test(line)) { + break; + } + content.push(line); + } + } + + if (!firstTag) { + throw new Error("could not found any version tag in UPDATELOG.md"); + } + + return content.join("\n").trim(); +} diff --git a/scripts/updater.mjs b/scripts/updater.mjs index 251f19b0..46358ff5 100644 --- a/scripts/updater.mjs +++ b/scripts/updater.mjs @@ -1,6 +1,6 @@ import fetch from "node-fetch"; import { getOctokit, context } from "@actions/github"; -import { resolveUpdateLog } from "./updatelog.mjs"; +import { resolveUpdateLog, resolveUpdateLogDefault } from "./updatelog.mjs"; // Add stable update JSON filenames const UPDATE_TAG_NAME = "updater"; @@ -85,8 +85,8 @@ async function processRelease(github, options, tag, isAlpha) { const updateData = { name: tag.name, - notes: await resolveUpdateLog(tag.name).catch( - () => "No changelog available", + notes: await resolveUpdateLog(tag.name).catch(() => + resolveUpdateLogDefault().catch(() => "No changelog available"), ), pub_date: new Date().toISOString(), platforms: { diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json old mode 100755 new mode 100644