From 7c38cc6be8616d115c220cbe07716ae1717cdb09 Mon Sep 17 00:00:00 2001 From: undefined Date: Thu, 17 Jul 2025 17:41:12 +0800 Subject: [PATCH] core: patch: support load from local file --- packages/hydrooj/src/commands/patch.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/hydrooj/src/commands/patch.ts b/packages/hydrooj/src/commands/patch.ts index 9e7dc6a2e..c8d968553 100644 --- a/packages/hydrooj/src/commands/patch.ts +++ b/packages/hydrooj/src/commands/patch.ts @@ -15,15 +15,21 @@ export function register(cli: CAC) { return; } logger.info('Patching %s', mod); - const res = await superagent.get(patch).responseType('arraybuffer'); - logger.info('Downloaded patch'); + let content = ''; + if (patch.startsWith('http')) { + const res = await superagent.get(patch).responseType('arraybuffer'); + logger.info('Downloaded patch'); + content = res.body; + } else { + content = await fs.readFile(patch, 'utf-8'); + } for (let i = 0; i <= 100; i++) { const fp = path.join(path.dirname(mod), `${path.basename(mod)}.${i}.patch`); if (fs.existsSync(fp)) continue; patch = fp; break; } - await fs.writeFile(patch, res.body); + await fs.writeFile(patch, content); child.execSync(`patch ${mod} -o ${mod}.tmp < ${patch}`); await fs.move(`${mod}.tmp`, mod, { overwrite: true }); logger.info('Patched %s', mod);