import { basename as pathBasename, join as pathJoin } from "path"; import { execSync } from "child_process"; import fs from "fs"; import { transformCodebase } from "../tools/transformCodebase"; import { rm_rf, rm, rm_r } from "./rm"; /** assert url ends with .zip */ export function downloadAndUnzip(params: { url: string; destDirPath: string; pathOfDirToExtractInArchive?: string }) { const { url, destDirPath, pathOfDirToExtractInArchive } = params; const tmpDirPath = pathJoin(destDirPath, "..", "tmp_xxKdOxnEdx"); rm_rf(tmpDirPath); fs.mkdirSync(tmpDirPath, { "recursive": true }); execSync(`wget ${url}`, { "cwd": tmpDirPath }); execSync(`unzip ${pathBasename(url)}${pathOfDirToExtractInArchive === undefined ? "" : ` "${pathOfDirToExtractInArchive}/*"`}`, { "cwd": tmpDirPath, }); rm(pathBasename(url), { "cwd": tmpDirPath }); transformCodebase({ "srcDirPath": pathOfDirToExtractInArchive === undefined ? tmpDirPath : pathJoin(tmpDirPath, pathOfDirToExtractInArchive), destDirPath, }); rm_r(tmpDirPath); }