Initial
This commit is contained in:
60
Client/node_modules/gulp-vinyl-zip/lib/zip/index.js
generated
vendored
Executable file
60
Client/node_modules/gulp-vinyl-zip/lib/zip/index.js
generated
vendored
Executable file
@@ -0,0 +1,60 @@
|
||||
'use strict';
|
||||
|
||||
var through = require('through2');
|
||||
var yazl = require('yazl');
|
||||
var File = require('../vinyl-zip');
|
||||
|
||||
function zip(zipPath, options) {
|
||||
if (!zipPath) throw new Error('No zip path specified.');
|
||||
|
||||
options = options || {};
|
||||
|
||||
var zip = new yazl.ZipFile();
|
||||
var isEmpty = true;
|
||||
|
||||
var stream = through.obj(function(file, enc, cb) {
|
||||
var stat = file.stat || {};
|
||||
|
||||
var opts = {
|
||||
mtime: stat.mtime,
|
||||
mode: stat.mode
|
||||
};
|
||||
|
||||
opts.compress = options.compress;
|
||||
|
||||
var path = file.relative.replace(/\\/g, '/');
|
||||
|
||||
if (stat.isSymbolicLink && stat.isSymbolicLink()) {
|
||||
zip.addBuffer(new Buffer(file.symlink), path, opts);
|
||||
} else if (file.isDirectory()) {
|
||||
// In Windows, directories have a 666 permissions. This doesn't go well
|
||||
// on OS X and Linux, where directories are expected to be 755.
|
||||
if (/win32/.test(process.platform)) {
|
||||
opts.mode = 16877;
|
||||
}
|
||||
|
||||
zip.addEmptyDirectory(path, opts);
|
||||
} else if (file.isBuffer()) {
|
||||
zip.addBuffer(file.contents, path, opts);
|
||||
} else if (file.isStream()) {
|
||||
zip.addReadStream(file.contents, path, opts);
|
||||
}
|
||||
|
||||
isEmpty = false;
|
||||
cb();
|
||||
}, function(cb) {
|
||||
if (isEmpty && options.unlessEmpty) {
|
||||
return cb();
|
||||
}
|
||||
|
||||
stream.push(new File({path: zipPath, contents: zip.outputStream}));
|
||||
zip.end(function() {
|
||||
cb();
|
||||
});
|
||||
});
|
||||
|
||||
stream.resume();
|
||||
return stream;
|
||||
}
|
||||
|
||||
module.exports = zip;
|
||||
Reference in New Issue
Block a user