replace adm-zip with unzipper in cmd plugin downloader

plugin-touch-ups
Moe 2024-09-12 09:33:59 -07:00
parent d096e55391
commit 53ec052a03
1 changed files with 9 additions and 6 deletions

View File

@ -1,5 +1,5 @@
const fetch = require('node-fetch'); const fetch = require('node-fetch');
const AdmZip = require('adm-zip'); const unzipper = require('unzipper');
const fs = require('fs').promises; const fs = require('fs').promises;
const path = require('path'); const path = require('path');
@ -21,13 +21,14 @@ async function fetchAndDownloadFolder(folderName) {
throw new Error(`Failed to download folder: ${response.statusText}`); throw new Error(`Failed to download folder: ${response.statusText}`);
} }
const buffer = await response.buffer(); // Create a temporary path for extraction
const zip = new AdmZip(buffer);
// Extract the ZIP to a temporary location
const tempExtractPath = path.join(process.cwd(), 'temp_extracted'); const tempExtractPath = path.join(process.cwd(), 'temp_extracted');
await fs.mkdir(tempExtractPath, { recursive: true }); await fs.mkdir(tempExtractPath, { recursive: true });
zip.extractAllTo(tempExtractPath, true);
// Extract the ZIP using unzipper
await response.body
.pipe(unzipper.Extract({ path: tempExtractPath }))
.promise();
// Find the folder ending with the target name // Find the folder ending with the target name
const extractedFolder = (await fs.readdir(tempExtractPath)).find(dir => dir.endsWith(folderName)); const extractedFolder = (await fs.readdir(tempExtractPath)).find(dir => dir.endsWith(folderName));
@ -66,3 +67,5 @@ if (!folderName) {
console.error('Usage: node script.js <folderName>'); console.error('Usage: node script.js <folderName>');
process.exit(1); process.exit(1);
} }
fetchAndDownloadFolder(folderName);