diff --git a/package.json b/package.json index 6271be8..eba1852 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "build": "node src/build.js" }, "dependencies": { - "extract-zip": "^2.0.1" + "unzipper": "^0.12.3" }, "engines": { "node": ">= 18.12.0" diff --git a/src/build.js b/src/build.js index 966e443..e304da9 100644 --- a/src/build.js +++ b/src/build.js @@ -2,19 +2,16 @@ // for deployment outside of GitLab CI, e.g. Cloudflare Pages and Netlify -import unzip from 'extract-zip' +import { Extract } from 'unzipper' import { dirname, join } from 'node:path' import { mkdir } from 'node:fs/promises' -import { createWriteStream } from 'node:fs' import { pipeline } from 'node:stream/promises' import { fileURLToPath } from 'node:url' import { Readable } from 'node:stream' const __dirname = dirname(fileURLToPath(import.meta.url)) const rootPath = join(__dirname, '..') -const tmpPath = join(rootPath, 'tmp') const publicPath = join(rootPath, 'public') -const zipPath = join(tmpPath, 'artifacts.zip') const artifactsUrl = 'https://gitlab.com/malware-filter/tracking-filter/-/jobs/artifacts/main/download?job=pages' const pipelineUrl = 'https://gitlab.com/malware-filter/tracking-filter/badges/main/pipeline.svg' const ghMirror = 'https://nightly.link/curbengh/tracking-filter/workflows/pages/main/public.zip' @@ -30,15 +27,11 @@ const pipelineStatus = async (url) => { } const f = async () => { - let isMirror = false - - await mkdir(tmpPath, { recursive: true }) - console.log(`Downloading artifacts.zip from "${artifactsUrl}"`) try { await pipeline( Readable.fromWeb((await fetch(artifactsUrl)).body), - createWriteStream(zipPath) + Extract({ path: rootPath }) ) await pipelineStatus(pipelineUrl) } catch ({ message }) { @@ -48,12 +41,13 @@ const f = async () => { })) console.log(`Downloading artifacts.zip from "${ghMirror}"`) - isMirror = true + + await mkdir(publicPath, { recursive: true }) try { await pipeline( Readable.fromWeb((await fetch(ghMirror)).body), - createWriteStream(zipPath) + Extract({ path: publicPath }) ) } catch ({ message }) { throw new Error(JSON.stringify({ @@ -62,14 +56,6 @@ const f = async () => { })) } } - - console.log('Extracting artifacts.zip...') - if (isMirror === false) { - await unzip(zipPath, { dir: rootPath }) - } else { - await mkdir(publicPath, { recursive: true }) - await unzip(zipPath, { dir: publicPath }) - } } f()