forked from phenom/healer-man
Update Healer Man server
This commit is contained in:
1 parent
6114a2295f
commit
69809f7228
593 files changed
+903643
-40774
No files matched your search
@@ -0,0 +1,52 @@
|
||||
import { readFile, mkdir, writeFile } from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
import { buildOriginNativeMaterialProvenance } from "./lib/origin-native-material-provenance.mjs";
|
||||
|
||||
function parseArgs(argv) {
|
||||
const args = {};
|
||||
for (let index = 0; index < argv.length; index += 1) {
|
||||
const name = argv[index];
|
||||
if (!name.startsWith("--")) throw new Error(`Unexpected argument: ${name}`);
|
||||
const value = argv[++index];
|
||||
if (!value || value.startsWith("--")) throw new Error(`Missing value for ${name}.`);
|
||||
args[name.slice(2)] = value;
|
||||
}
|
||||
for (const name of ["metadata", "assembly", "semantics", "output-dir"]) {
|
||||
if (!args[name]) throw new Error(`Missing --${name}.`);
|
||||
}
|
||||
return args;
|
||||
}
|
||||
|
||||
async function readJson(file) {
|
||||
return JSON.parse(await readFile(file, "utf8"));
|
||||
}
|
||||
|
||||
const args = parseArgs(process.argv.slice(2));
|
||||
const [metadata, assembly, semantics] = await Promise.all([
|
||||
readJson(args.metadata),
|
||||
readJson(args.assembly),
|
||||
readJson(args.semantics),
|
||||
]);
|
||||
const conversionReports = new Map();
|
||||
for (const override of assembly.stagedOverrides ?? []) {
|
||||
const visualPath = path.resolve(process.cwd(), override.file.replaceAll("\\", path.sep));
|
||||
const conversionPath = path.join(path.dirname(visualPath), "conversion-report.json");
|
||||
const report = await readJson(conversionPath);
|
||||
conversionReports.set(override.resource.replaceAll("/", "\\").toLowerCase(), report);
|
||||
}
|
||||
const output = buildOriginNativeMaterialProvenance({ metadata, assembly, semantics, conversionReports });
|
||||
const outputDirectory = path.resolve(args["output-dir"]);
|
||||
await mkdir(outputDirectory, { recursive: true });
|
||||
await Promise.all([
|
||||
writeFile(path.join(outputDirectory, "import-metadata.json"), `${JSON.stringify(output.metadata, null, 2)}\n`),
|
||||
writeFile(path.join(outputDirectory, "native-material-alpha-report.json"), `${JSON.stringify(output.alphaReport, null, 2)}\n`),
|
||||
writeFile(path.join(outputDirectory, "native-material-semantics-report.json"), `${JSON.stringify(output.semanticsReport, null, 2)}\n`),
|
||||
]);
|
||||
console.log(JSON.stringify({
|
||||
outputDirectory,
|
||||
stagedOverrides: output.metadata.nativeMaterialAlpha.resources.length,
|
||||
alphaMaterials: output.alphaReport.resources.reduce((count, row) => count + row.nativeAlpha.materials.length, 0),
|
||||
additiveMaterials: output.semanticsReport.nativeAdditiveMaterials.length,
|
||||
unlitMaterials: output.semanticsReport.khrMaterialsUnlit.length,
|
||||
packageAssetsPreserved: output.metadata.assets?.length ?? 0,
|
||||
}, null, 2));
|
||||
Reference in new issue
Block a user