diff --git a/packages/ui/certd-server/src/controller/basic/app-controller.test.ts b/packages/ui/certd-server/src/controller/basic/app-controller.test.ts new file mode 100644 index 000000000..95cd7f21c --- /dev/null +++ b/packages/ui/certd-server/src/controller/basic/app-controller.test.ts @@ -0,0 +1,17 @@ +/// +/// + +import assert from "node:assert/strict"; + +import { normalizeReleaseVersion } from "./app-controller.js"; + +describe("AppController.normalizeReleaseVersion", () => { + it("normalizes AtomGit release tag names", () => { + assert.equal(normalizeReleaseVersion({ tag_name: "v1.40.0" }), "1.40.0"); + assert.equal(normalizeReleaseVersion({ tag_name: "1.40.0" }), "1.40.0"); + }); + + it("falls back to release name when tag_name is empty", () => { + assert.equal(normalizeReleaseVersion({ name: "v1.40.0" }), "1.40.0"); + }); +}); diff --git a/packages/ui/certd-server/src/controller/basic/app-controller.ts b/packages/ui/certd-server/src/controller/basic/app-controller.ts index b77ac5c50..cf8aaf93a 100644 --- a/packages/ui/certd-server/src/controller/basic/app-controller.ts +++ b/packages/ui/certd-server/src/controller/basic/app-controller.ts @@ -3,6 +3,11 @@ import { BaseController, Constants, FileService, SysSettingsService, SysSiteInfo import { http, logger } from '@certd/basic'; import { isComm } from '@certd/plus-core'; +export function normalizeReleaseVersion(release: { tag_name?: string; name?: string }) { + const version = release?.tag_name || release?.name || ''; + return version.replace(/^v/i, ''); +} + /** */ @Provide() @@ -17,12 +22,12 @@ export class AppController extends BaseController { async latest(): Promise { try { const res = await http.request({ - url: 'https://registry.npmmirror.com/@certd/pipeline', + url: 'https://api.atomgit.com/api/v5/repos/certd/certd/releases/latest', method: 'get', logRes: false, timeout: 5000, }); - const latest = res['dist-tags'].latest; + const latest = normalizeReleaseVersion(res); return this.ok(latest); } catch (e: any) { logger.error(e);