fix(build): generate Suwayomi WebUI revision

This commit is contained in:
2026-07-23 01:29:04 +08:00
parent 4edc660606
commit a8e4b6e658
4 changed files with 55 additions and 1 deletions

View File

@@ -8,7 +8,8 @@
"setup": "pnpm i --frozen-lockfile && pnpm setup-env-files",
"dev": "pnpm setup && vite",
"preview": "pnpm setup && vite preview",
"build": "pnpm setup && vite build",
"build": "pnpm setup && vite build && pnpm build-revision",
"build-revision": "tsx tools/scripts/writeWebUIRevision.ts",
"test": "pnpm test:material-you",
"test:material-you": "tsx --test src/features/theme/services/*.test.ts",
"build-md5": "find build -type f | sort | xargs md5sum | awk '{ print $1 }' | tr -d '\n' | md5sum| awk '{ print $1 }' > buildZip/md5sum ",

View File

@@ -0,0 +1,22 @@
/*
* Copyright (C) Contributors to the Suwayomi project
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
import assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import { formatWebUIRevision } from '@/features/theme/services/MaterialYouRevision.ts';
describe('formatWebUIRevision', () => {
it('matches the revision format required by Suwayomi custom WebUI builds', () => {
assert.equal(formatWebUIRevision(3356), 'r3356\n');
});
it('rejects invalid git commit counts', () => {
assert.throws(() => formatWebUIRevision(0), /positive integer/);
assert.throws(() => formatWebUIRevision(4.5), /positive integer/);
});
});

View File

@@ -0,0 +1,15 @@
/*
* Copyright (C) Contributors to the Suwayomi project
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
export const formatWebUIRevision = (commitCount: number): string => {
if (!Number.isInteger(commitCount) || commitCount < 1) {
throw new Error('WebUI revision commit count must be a positive integer');
}
return `r${commitCount}\n`;
};

View File

@@ -0,0 +1,16 @@
/*
* Copyright (C) Contributors to the Suwayomi project
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
import { execFileSync } from 'node:child_process';
import { writeFileSync } from 'node:fs';
import { formatWebUIRevision } from '@/features/theme/services/MaterialYouRevision.ts';
const commitCount = Number(execFileSync('git', ['rev-list', 'HEAD', '--count'], { encoding: 'utf8' }).trim());
const revisionPath = new URL('../../build/revision', import.meta.url);
writeFileSync(revisionPath, formatWebUIRevision(commitCount), 'utf8');