UNPKG

vitis-engine-lib

Version:

Lib used on Vitis engines

184 lines 6.34 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const archiver_1 = __importDefault(require("archiver")); const decompress_1 = __importDefault(require("decompress")); /** * Classe permettant la gestion des fichiers en local */ class LocalFS { constructor(properties, logger) { this.properties_ = properties; this.logger_ = logger; } zipDir(dirPath, zipName = null) { return new Promise((resolve, reject) => { let zipPath = `${dirPath}.zip`; if (zipName && zipName.indexOf('.zip') > 0) { const aPath = dirPath.split('/'); aPath.pop(); aPath.push(zipName); zipPath = aPath.join('/'); } const output = fs_1.default.createWriteStream(zipPath); const archive = archiver_1.default('zip', { zlib: { level: 9, }, }); output.on('close', () => { // Supprime le dossier this.deleteFolderRecursive_(dirPath); setTimeout(() => { // Retour resolve(zipPath); }, 0); }); archive.on('error', (err) => { throw err; }); archive.pipe(output); archive.directory(dirPath, false); archive.finalize(); }); } /** * Dézippe un dossier * @param zipPath * @param unzipToDir * @returns */ unzip(zipPath, unzipToDir) { return decompress_1.default(zipPath, unzipToDir); } /** * Supprime une dossier et son contenu * @param {*} folderPath */ deleteFolder(folderPath) { this.deleteFolderRecursive_(folderPath); } /** * Donne tous les droits au dossier * @param {*} folderPath * @param {*} sRights */ changeFolderRights(folderPath, sRights) { this.changeFolderRightsRecursive_(folderPath, sRights); } /** * Donne tous les droits au dossier * @param {*} folderPath * @param {*} sOwner */ changeFolderOwner(folderPath, sOwner) { if (process.platform !== "win32") { const userid = require('userid'); const uid = userid.uid(sOwner); const gid = userid.gid(sOwner); if (Number.isInteger(uid) && Number.isInteger(gid)) { this.changeFolderOwnerRecursive_(folderPath, uid, gid); } } } /** * Supprime une dossier et son contenu * @param {*} folderPath */ deleteFolderRecursive_(folderPath) { if (fs_1.default.existsSync(folderPath)) { fs_1.default.readdirSync(folderPath).forEach((file, index) => { const curPath = path_1.default.join(folderPath, file); if (fs_1.default.lstatSync(curPath).isDirectory()) { // Récursive this.deleteFolderRecursive_(curPath); } else { // Suppression du fichier fs_1.default.unlinkSync(curPath); } }); // Suppression du dossier fs_1.default.rmdirSync(folderPath); } } /** * Donne tous les droits au dossier * @param folderPath */ changeFolderRightsRecursive_(folderPath, sRights) { if (fs_1.default.existsSync(folderPath)) { fs_1.default.readdirSync(folderPath).forEach((file, index) => { const curPath = path_1.default.join(folderPath, file); if (fs_1.default.lstatSync(curPath).isDirectory()) { // Récursive this.changeFolderRightsRecursive_(curPath, sRights); } else { // Modification du fichier fs_1.default.chmodSync(curPath, sRights); } }); // Modification du dossier fs_1.default.chmodSync(folderPath, sRights); } } /** * Change le propriétaire du dossier * @param folderPath */ changeFolderOwnerRecursive_(folderPath, uid, gid) { if (fs_1.default.existsSync(folderPath)) { fs_1.default.readdirSync(folderPath).forEach((file, index) => { const curPath = path_1.default.join(folderPath, file); if (fs_1.default.lstatSync(curPath).isDirectory()) { // Récursive this.changeFolderOwnerRecursive_(curPath, uid, gid); } else { // Modification du fichier fs_1.default.chownSync(curPath, uid, gid); } }); // Modification du dossier fs_1.default.chownSync(folderPath, uid, gid); } } /** * * @param srcPath * @param dstPath * @returns */ copyDirRecursiveSync(srcPath, dstPath) { // Vérifier si le dossier source existe if (!fs_1.default.existsSync(srcPath)) { return false; } // Créer le dossier de destination s'il n'existe pas if (!fs_1.default.existsSync(dstPath)) { fs_1.default.mkdirSync(dstPath, { recursive: true }); } // Lister le contenu du dossier source const files = fs_1.default.readdirSync(srcPath); for (const file of files) { const sourcePath = srcPath + '/' + file; const destinationPath = dstPath + '/' + file; if (fs_1.default.statSync(sourcePath).isDirectory()) { // Si c'est un sous-dossier, copier récursivement this.copyDirRecursiveSync(sourcePath, destinationPath); } else { // Si c'est un fichier, le copier fs_1.default.copyFileSync(sourcePath, destinationPath); } } return true; } } exports.default = LocalFS; //# sourceMappingURL=local_fs.js.map