From 3dcc6d2aa265ee417e37c2ab7d69ca2b8ca1a3cf Mon Sep 17 00:00:00 2001 From: undefined Date: Fri, 22 Jan 2021 12:57:02 +0800 Subject: [PATCH] core: import.syzoj: del tmp file --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/import.syzoj.ts | 42 +++++++++++--------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index b8a37d1fa..5efc0ef6d 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.15.28", + "version": "2.15.29", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/import.syzoj.ts b/packages/hydrooj/src/handler/import.syzoj.ts index 0b0c50b40..4788b82a1 100644 --- a/packages/hydrooj/src/handler/import.syzoj.ts +++ b/packages/hydrooj/src/handler/import.syzoj.ts @@ -102,26 +102,30 @@ class ProblemImportSYZOJHandler extends Handler { const r = download(`${url}testdata/download`); const file = path.resolve(os.tmpdir(), 'hydro', `import_${domainId}_${docId}.zip`); const w = fs.createWriteStream(file); - await new Promise((resolve, reject) => { - w.on('finish', resolve); - w.on('error', reject); - r.pipe(w); - }); - const zip = new AdmZip(file); - const entries = zip.getEntries(); - for (const entry of entries) { - // eslint-disable-next-line no-await-in-loop - await problem.addTestdata(domainId, docId, entry.entryName, entry.getData()); + try { + await new Promise((resolve, reject) => { + w.on('finish', resolve); + w.on('error', reject); + r.pipe(w); + }); + const zip = new AdmZip(file); + const entries = zip.getEntries(); + for (const entry of entries) { + // eslint-disable-next-line no-await-in-loop + await problem.addTestdata(domainId, docId, entry.entryName, entry.getData()); + } + const filename = p.file_io_input_name ? p.file_io_input_name?.split('.')[0] : null; + await problem.edit(domainId, docId, { + config: { + time: `${p.time_limit}ms`, + memory: `${p.memory_limit}m`, + filename, + type: p.type === 'traditional' ? 'default' : p.type, + }, + }); + } finally { + fs.unlinkSync(file); } - const filename = p.file_io_input_name ? p.file_io_input_name?.split('.')[0] : null; - await problem.edit(domainId, docId, { - config: { - time: `${p.time_limit}ms`, - memory: `${p.memory_limit}m`, - filename, - type: p.type === 'traditional' ? 'default' : p.type, - }, - }); return docId; }