aboutsummaryrefslogtreecommitdiff
path: root/node_modules/gulp-tar/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/gulp-tar/index.js')
-rw-r--r--node_modules/gulp-tar/index.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/node_modules/gulp-tar/index.js b/node_modules/gulp-tar/index.js
new file mode 100644
index 000000000..40ccbb3fd
--- /dev/null
+++ b/node_modules/gulp-tar/index.js
@@ -0,0 +1,50 @@
+'use strict';
+var path = require('path');
+var gutil = require('gulp-util');
+var through = require('through2');
+var objectAssign = require('object-assign');
+var archiver = require('archiver');
+
+module.exports = function (filename, opts) {
+ if (!filename) {
+ throw new gutil.PluginError('gulp-tar', '`filename` required');
+ }
+
+ var firstFile;
+ var archive = archiver('tar');
+
+ return through.obj(function (file, enc, cb) {
+ if (file.relative === '') {
+ cb();
+ return;
+ }
+
+ if (firstFile === undefined) {
+ firstFile = file;
+ }
+
+ archive.append(file.contents, objectAssign({
+ name: file.relative.replace(/\\/g, '/') + (file.isNull() ? '/' : ''),
+ mode: file.stat && file.stat.mode,
+ date: file.stat && file.stat.mtime ? file.stat.mtime : null
+ }, opts));
+
+ cb();
+ }, function (cb) {
+ if (firstFile === undefined) {
+ cb();
+ return;
+ }
+
+ archive.finalize();
+
+ this.push(new gutil.File({
+ cwd: firstFile.cwd,
+ base: firstFile.base,
+ path: path.join(firstFile.base, filename),
+ contents: archive
+ }));
+
+ cb();
+ });
+};