fast-extract
Version:
Extract contents from various archive types (tar, tar.bz2, tar.gz, tar.xz, tgz, zip)
53 lines • 2.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return createFilePipeline;
}
});
var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
var _mkdirpclassic = /*#__PURE__*/ _interop_require_default(require("mkdirp-classic"));
var _path = /*#__PURE__*/ _interop_require_default(require("path"));
var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
var _rimraf2 = /*#__PURE__*/ _interop_require_default(require("rimraf2"));
var _tempsuffix = /*#__PURE__*/ _interop_require_default(require("temp-suffix"));
var _flushwritestreamts = /*#__PURE__*/ _interop_require_default(require("../../compat/flush-write-stream.js"));
var _writeTruncateFilets = /*#__PURE__*/ _interop_require_default(require("../../writeTruncateFile.js"));
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function createFilePipeline(dest, options) {
var tempDest = (0, _tempsuffix.default)(dest);
options._tempPaths.push(tempDest);
var wroteSomething = false;
return (0, _flushwritestreamts.default)(function write(chunk, _encoding, callback) {
var _this = this;
wroteSomething = true;
var appendFile = _fs.default.appendFile.bind(_fs.default, tempDest, chunk, callback);
if (this.pathMade) return appendFile();
(0, _mkdirpclassic.default)(_path.default.dirname(tempDest), function() {
_this.pathMade = true;
appendFile();
});
}, function flush(callback) {
var queue = new _queuecb.default(1);
queue.defer(function(callback) {
(0, _mkdirpclassic.default)(_path.default.dirname(dest), function(err) {
err && err.code !== 'EEXIST' ? callback(err) : callback();
});
});
if (wroteSomething) {
queue.defer(_rimraf2.default.bind(null, dest, {
disableGlob: true
}));
queue.defer(_fs.default.rename.bind(_fs.default, tempDest, dest));
} else queue.defer(_writeTruncateFilets.default.bind(null, dest));
queue.await(callback);
});
}
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }