#!/usr/bin/env node /** * Build patch-manifest.json for a release (same names as files[].source in launcher.json). * * Usage (from a folder containing the patch binaries): * node generate-patch-manifest.js v0.9.0-client patch-Z.MPQ Wow-patched.exe * * Prints JSON to stdout — redirect to file: * node generate-patch-manifest.js v0.9.0-client patch-Z.MPQ Wow-patched.exe > patch-manifest.json */ 'use strict'; const fs = require('fs'); const path = require('path'); const crypto = require('crypto'); const version = process.argv[2]; const names = process.argv.slice(3); if (!version || names.length === 0) { console.error('Usage: generate-patch-manifest.js [file2 ...]'); console.error(' Example: generate-patch-manifest.js v0.9.0-client patch-Z.MPQ Wow-patched.exe'); process.exit(1); } const out = { version, files: {} }; for (const f of names) { const base = path.basename(f); const buf = fs.readFileSync(f); const sha256 = crypto.createHash('sha256').update(buf).digest('hex'); out.files[base] = { sha256 }; } process.stdout.write(`${JSON.stringify(out, null, 2)}\n`);