From a2db9ded8b2d6ed774c6f4e9b7bb890fe45fe2be Mon Sep 17 00:00:00 2001 From: SukkaW Date: Wed, 13 Dec 2023 12:02:10 +0800 Subject: [PATCH] Chore: replace `tar` w/ `tar-stream` --- Build/download-previous-build.ts | 54 +++++++++++++------------------ bun.lockb | Bin 89442 -> 88290 bytes package.json | 4 +-- 3 files changed, 24 insertions(+), 34 deletions(-) diff --git a/Build/download-previous-build.ts b/Build/download-previous-build.ts index 5b5d5a6d..22fca9ac 100644 --- a/Build/download-previous-build.ts +++ b/Build/download-previous-build.ts @@ -1,4 +1,3 @@ -import tar from 'tar'; import fs from 'fs'; import fsp from 'fs/promises'; import path from 'path'; @@ -9,6 +8,8 @@ import { readFileByLine } from './lib/fetch-text-by-line'; import { isCI } from 'ci-info'; import { task, traceAsync } from './lib/trace-runner'; import { defaultRequestInit, fetchWithRetry } from './lib/fetch-retry'; +import tarStream from 'tar-stream'; +import zlib from 'zlib'; const IS_READING_BUILD_OUTPUT = 1 << 2; const ALL_FILES_EXISTS = 1 << 3; @@ -56,40 +57,29 @@ export const downloadPreviousBuild = task(import.meta.path, async () => { fetchWithRetry('https://codeload.github.com/sukkalab/ruleset.skk.moe/tar.gz/master', defaultRequestInit), fsp.mkdir(extractedPath, { recursive: true }) ]); - await pipeline( - Readable.fromWeb(resp.body!), - tar.t({ - filter(p) { - return filesList.some(f => p.startsWith(f)); - }, - // onentry is async, so we close entry manually after consumed - noResume: true, - async onentry(entry) { - if (entry.type !== 'File') { - // not a file, throw away - entry.resume(); - return; - } - const relativeEntryPath = entry.path.replace(`ruleset.skk.moe-master${path.sep}`, ''); + const extract = tarStream.extract(); + Readable.fromWeb(resp.body!).pipe(zlib.createGunzip()).pipe(extract); + for await (const entry of extract) { + if (entry.header.type !== 'file') { + entry.resume(); // Drain the entry + continue; + } + // filter entry + if (!filesList.some(f => entry.header.name.startsWith(f))) { + entry.resume(); // Drain the entry + continue; + } - const targetPath = path.join(import.meta.dir, '..', relativeEntryPath); - await fsp.mkdir(path.dirname(targetPath), { recursive: true }); + const relativeEntryPath = entry.header.name.replace(`ruleset.skk.moe-master${path.sep}`, ''); + const targetPath = path.join(import.meta.dir, '..', relativeEntryPath); - const targetFileSink = Bun.file(targetPath).writer(); - const onData = (chunk: Buffer) => targetFileSink.write(chunk); - - // I don't know, but for some reason it is impossible to consume entry with AsyncIterator - await new Promise((resolve, reject) => { - entry.on('data', onData); - entry.on('end', resolve); - entry.on('error', reject); - }); - - await targetFileSink.end(); - } - }) - ); + await fsp.mkdir(path.dirname(targetPath), { recursive: true }); + await pipeline( + entry, + fs.createWriteStream(targetPath) + ); + } } ); }); diff --git a/bun.lockb b/bun.lockb index 53dd192fdf33e02883d8b2dc4a14a5d998403037..bc477b2f42a6f1ae722c106edc9c668cb548f48c 100755 GIT binary patch delta 16108 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 diff --git a/package.json b/package.json index 58bcf34e..30368955 100644 --- a/package.json +++ b/package.json @@ -26,14 +26,14 @@ "picocolors": "^1.0.0", "punycode": "^2.3.1", "table": "^6.8.1", - "tar": "^6.2.0", + "tar-stream": "^3.1.6", "tldts": "^6.0.22" }, "devDependencies": { "@eslint-sukka/node": "4.1.10-beta.2", "@eslint-sukka/ts": "4.1.10-beta.2", "@types/async-retry": "^1.4.8", - "@types/tar": "^6.1.9", + "@types/tar-stream": "^3.1.3", "bun-types": "^1.0.11", "eslint": "^8.55.0", "eslint-config-sukka": "4.1.10-beta.2",