UNPKG

piral-cli

Version:

The standard CLI for creating and building a Piral instance or a Pilet.

69 lines 2.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createTgz = createTgz; exports.createTarball = createTarball; exports.unpackTarball = unpackTarball; exports.unpackGzTar = unpackGzTar; const zlib_1 = require("zlib"); const fs_1 = require("fs"); const path_1 = require("path"); const log_1 = require("./log"); const external_1 = require("../external"); /** * Creates an npm-style tgz. */ function createTgz(file, cwd, files) { const stream = (0, fs_1.createWriteStream)(file); const tgz = external_1.tar.create({ cwd, prefix: 'package/', portable: true, follow: true, gzip: { level: 9, }, // @ts-ignore mtime: new Date('1985-10-26T08:15:00.000Z'), }, files); tgz.pipe(stream, { end: true }); return new Promise((finish) => stream.on('close', finish)); } function createTarball(sourceDir, targetDir, targetFile) { const folder = (0, path_1.relative)(targetDir, sourceDir); (0, log_1.log)('generalDebug_0003', `Create archive "${targetFile}" in "${targetDir}" containing "${folder}".`); return external_1.tar.create({ file: (0, path_1.resolve)(targetDir, targetFile), cwd: targetDir, }, [folder]); } function unpackTarball(sourceDir, sourceFile) { (0, log_1.log)('generalDebug_0003', `Extract files from "${sourceFile}" in "${sourceDir}".`); return external_1.tar.extract({ file: (0, path_1.resolve)(sourceDir, sourceFile), keep: false, cwd: sourceDir, }); } function unpackGzTar(stream) { const TarParser = external_1.tar.Parser; return new Promise((resolve, reject) => { const files = {}; (0, log_1.log)('generalDebug_0003', `Unpacking the stream ...`); stream .on('error', reject) .pipe((0, zlib_1.createGunzip)()) .on('error', reject) .pipe(new TarParser()) .on('error', reject) .on('entry', (e) => { const content = []; const p = e.path; (0, log_1.log)('generalDebug_0003', `Found entry "${p}" in packed content.`); e.on('error', reject); e.on('data', (c) => content.push(c)); e.on('end', () => (files[p] = Buffer.concat(content))); }) .on('end', () => resolve(files)); }); } //# sourceMappingURL=archive.js.map