piral-cli
Version:
The standard CLI for creating and building a Piral instance or a Pilet.
69 lines • 2.42 kB
JavaScript
;
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