You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

47 lines
1019 B

'use strict';
var archiveType = require('archive-type');
var Decompress = require('decompress');
var gutil = require('gulp-util');
var Transform = require('readable-stream/transform');
module.exports = function (opts) {
opts = opts || {};
return new Transform({
objectMode: true,
transform: function (file, enc, cb) {
if (file.isNull()) {
cb(null, file);
return;
}
if (file.isStream()) {
cb(new gutil.PluginError('gulp-decompress', 'Streaming is not supported'));
return;
}
if (!archiveType(file.contents)) {
cb(null, file);
return;
}
var decompress = new Decompress()
.src(file.contents)
.use(Decompress.tar(opts))
.use(Decompress.tarbz2(opts))
.use(Decompress.targz(opts))
.use(Decompress.zip(opts));
decompress.run(function (err, files) {
if (err) {
cb(new gutil.PluginError('gulp-decompress:', err, {fileName: file.path}));
return;
}
files.forEach(this.push.bind(this));
cb();
}.bind(this));
}
});
};