UNPKG

generator-office

Version:

Yeoman generator for creating Microsoft Office projects using any text editor.

79 lines 3.32 kB
import axios from "axios"; import * as fs from "fs"; import * as path from "path"; import AdmZip from "adm-zip"; const zipFile = 'project.zip'; // eslint-disable-next-line @typescript-eslint/no-namespace export var helperMethods; (function (helperMethods) { function deleteFolderRecursively(projectFolder) { try { if (fs.existsSync(projectFolder)) { fs.readdirSync(projectFolder).forEach(function (file) { const curPath = `${projectFolder}/${file}`; if (fs.lstatSync(curPath).isDirectory()) { deleteFolderRecursively(curPath); } else { fs.unlinkSync(curPath); } }); fs.rmdirSync(projectFolder); } } catch (err) { throw new Error(`Unable to delete folder "${projectFolder}".\n${err}`); } } helperMethods.deleteFolderRecursively = deleteFolderRecursively; function doesProjectFolderExist(projectFolder) { if (fs.existsSync(projectFolder)) { return fs.readdirSync(projectFolder).length > 0; } return false; } helperMethods.doesProjectFolderExist = doesProjectFolderExist; ; async function downloadProjectTemplateZipFile(projectFolder, projectRepo, projectBranch) { const projectTemplateZipFile = `${projectRepo}/archive/${projectBranch}.zip`; return axios({ method: 'get', url: projectTemplateZipFile, responseType: 'stream', }).then(response => { return new Promise((resolve, reject) => { response.data.pipe(fs.createWriteStream(zipFile)) .on('error', function (err) { reject(`Unable to download project zip file for "${projectTemplateZipFile}".\n${err}`); }) .on('close', async () => { resolve(path.resolve(`${projectFolder}/project.zip`)); }); }); }).catch(err => { const error = `Unable to download project zip file for "${projectTemplateZipFile}".\n${err}`; console.log(error); return Promise.reject(error); }); } helperMethods.downloadProjectTemplateZipFile = downloadProjectTemplateZipFile; async function unzipProjectTemplate(projectFolder) { return new Promise(async (resolve, reject) => { const zipFile = 'project.zip'; const zip = new AdmZip(`${projectFolder}/${zipFile}`); try { zip.extractAllTo(/*target path*/ projectFolder, /*overwrite*/ true); // get path to unzipped folder const unzippedFolder = fs.readdirSync(projectFolder).filter(function (file) { return fs.statSync(`${projectFolder}/${file}`).isDirectory(); }); resolve(unzippedFolder[0]); } catch (err) { reject(`Unable to unzip project zip file for "${projectFolder}".\n${err}`); } }); } helperMethods.unzipProjectTemplate = unzipProjectTemplate; })(helperMethods || (helperMethods = {})); //# sourceMappingURL=helperMethods.js.map