mirror of
https://github.com/SukkaW/Surge.git
synced 2025-12-12 01:00:34 +08:00
Chore: do not write tar.gz to disk
This commit is contained in:
parent
8e4ec2eb05
commit
07b8350048
@ -8,7 +8,6 @@ import { createRuleset } from './lib/create-file';
|
||||
import { task } from './lib/trace-runner';
|
||||
|
||||
export const buildTelegramCIDR = task(__filename, async () => {
|
||||
/** @type {Response} */
|
||||
const resp = await fetchWithRetry('https://core.telegram.org/resources/cidr.txt', defaultRequestInit);
|
||||
const lastModified = resp.headers.get('last-modified');
|
||||
const date = lastModified ? new Date(lastModified) : new Date();
|
||||
|
||||
@ -51,31 +51,49 @@ export const downloadPreviousBuild = task(__filename, async () => {
|
||||
|
||||
await traceAsync(
|
||||
'Download and extract previous build',
|
||||
() => Promise.all([
|
||||
fetchWithRetry('https://codeload.github.com/sukkalab/ruleset.skk.moe/tar.gz/master', defaultRequestInit),
|
||||
fsp.mkdir(extractedPath, { recursive: true })
|
||||
]).then(([resp]) => pipeline(
|
||||
Readable.fromWeb(resp.body!),
|
||||
tar.x({
|
||||
cwd: extractedPath,
|
||||
filter(p) {
|
||||
return filesList.some(f => p.startsWith(f));
|
||||
}
|
||||
})
|
||||
))
|
||||
);
|
||||
async () => {
|
||||
const [resp] = await Promise.all([
|
||||
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
|
||||
console.log(entry.type, entry.path)
|
||||
entry.resume();
|
||||
return;
|
||||
}
|
||||
|
||||
await Promise.all(buildOutputList.map(async p => {
|
||||
const src = path.join(extractedPath, 'ruleset.skk.moe-master', p);
|
||||
const relativeEntryPath = entry.path.replace('ruleset.skk.moe-master' + path.sep, '');
|
||||
|
||||
if (fs.existsSync(src)) { // Bun.file().exists() doesn't check directory
|
||||
return fsp.cp(
|
||||
src,
|
||||
path.join(__dirname, '..', p),
|
||||
{ force: true, recursive: true }
|
||||
const targetPath = path.join(__dirname, '..', relativeEntryPath);
|
||||
await fsp.mkdir(path.dirname(targetPath), { recursive: true });
|
||||
|
||||
const targetFile = Bun.file(targetPath);
|
||||
const targetFileSink = targetFile.writer();
|
||||
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
entry.on('data', (chunk) => {
|
||||
targetFileSink.write(chunk);
|
||||
});
|
||||
entry.on('end', resolve);
|
||||
entry.on('error', reject);
|
||||
});
|
||||
|
||||
await targetFileSink.end();
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
}));
|
||||
);
|
||||
});
|
||||
|
||||
export const downloadPublicSuffixList = task(__filename, async () => {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user