feat: integrate XSLT Tools with toolbox portal

This commit is contained in:
2026-07-20 18:16:18 +02:00
parent 3193cc395c
commit 8f8a59e76c
36 changed files with 1737 additions and 243 deletions

View File

@@ -0,0 +1,33 @@
import { readFile, writeFile } from 'node:fs/promises';
import { dirname, join, resolve } from 'node:path';
import process from 'node:process';
import { fileURLToPath } from 'node:url';
import { format } from 'prettier';
import { toolboxAppDefinition } from '../src/toolboxApp.ts';
const repositoryRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..');
const packageJson = JSON.parse(
await readFile(join(repositoryRoot, 'package.json'), 'utf8')
);
const manifestPath = join(repositoryRoot, 'public', 'toolbox-app.json');
if (toolboxAppDefinition.version !== packageJson.version) {
throw new Error(
`Version mismatch: package.json is ${packageJson.version}, while src/toolboxApp.ts is ${toolboxAppDefinition.version}.`
);
}
const output = await format(JSON.stringify(toolboxAppDefinition), {
parser: 'json',
});
if (process.argv.includes('--check')) {
const existing = await readFile(manifestPath, 'utf8').catch(() => '');
if (existing !== output) {
throw new Error(
'public/toolbox-app.json is out of date. Run `npm run manifest:generate`.'
);
}
} else {
await writeFile(manifestPath, output);
}