import fs from 'node:fs' import path from 'node:path' import { spawnSync } from 'node:child_process' import { fileURLToPath } from 'node:url' import { loadAndValidateManifest } from './manifest-v2.mjs' const scriptDirectory = path.dirname(fileURLToPath(import.meta.url)) const pipelineDirectory = path.resolve(scriptDirectory, '..') const workspace = path.resolve(pipelineDirectory, '..') const manifestPath = path.join(pipelineDirectory, 'manifests', 'a01-scroll-skins-v3.json') const reportPath = path.join(pipelineDirectory, 'generated', 'a01-scroll-skins-v3', 'quality-report.json') const localPython = path.join(pipelineDirectory, '.venv', 'Scripts', 'python.exe') const python = process.env.PYTHON || (fs.existsSync(localPython) ? localPython : 'python') await loadAndValidateManifest(manifestPath, workspace) const result = spawnSync( python, [path.join(scriptDirectory, 'verify-assets.py'), manifestPath, '--workspace', workspace, '--report', reportPath], { cwd: workspace, encoding: 'utf8', stdio: 'inherit' } ) if (result.error) throw new Error(`无法启动 Python(${python}):${result.error.message}`) if (result.status !== 0) process.exit(result.status ?? 1)