feat: integrate PDF Tools with toolbox portal

This commit is contained in:
2026-07-20 18:13:43 +02:00
parent bff9e059d8
commit d40a288a4e
23 changed files with 879 additions and 354 deletions

View File

@@ -0,0 +1,64 @@
import { readFile, writeFile } from 'node:fs/promises';
import path from 'node:path';
import process from 'node:process';
import { fileURLToPath } from 'node:url';
import { parseToolboxApp } from '@add-ideas/toolbox-contract';
import { format } from 'prettier';
const projectRoot = path.resolve(
path.dirname(fileURLToPath(import.meta.url)),
'..'
);
const packageJsonPath = path.join(projectRoot, 'package.json');
const definitionPath = path.join(
projectRoot,
'src',
'toolboxApp.definition.json'
);
const versionSourcePath = path.join(projectRoot, 'src', 'version.ts');
const manifestPath = path.join(projectRoot, 'public', 'toolbox-app.json');
const [packageJson, definition, versionSource] = await Promise.all([
readJson(packageJsonPath),
readJson(definitionPath),
readFile(versionSourcePath, 'utf8'),
]);
const sourceVersion = versionSource.match(
/APP_VERSION\s*=\s*['"]([^'"]+)['"]/
)?.[1];
if (!sourceVersion) {
throw new Error('Could not read APP_VERSION from src/version.ts.');
}
if (sourceVersion !== packageJson.version) {
throw new Error(
`Version mismatch: package.json is ${packageJson.version}, while src/version.ts is ${sourceVersion}.`
);
}
const manifest = {
$schema:
'https://git.add-ideas.de/zemion/toolbox-sdk/raw/branch/main/schemas/toolbox-app.v1.schema.json',
schemaVersion: 1,
...definition,
version: packageJson.version,
};
parseToolboxApp(manifest);
const output = await format(JSON.stringify(manifest), { 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);
}
async function readJson(filePath) {
return JSON.parse(await readFile(filePath, 'utf8'));
}