Upsilon-VsCode/Client/node_modules/gulp-symdest/index.js

50 lines
977 B
JavaScript
Executable File

var fs = require('fs');
var path = require('path');
var mkdirp = require('mkdirp');
var vfs = require('vinyl-fs');
var es = require('event-stream');
var queue = require('queue');
function createSymlink(dest, symlink, cb) {
mkdirp(path.dirname(dest), function (err) {
if (err) { return cb(err); }
fs.symlink(symlink, dest, cb);
});
}
module.exports = function (out) {
var pass = es.through();
var symlinks = [];
return es.duplex(pass,
pass.pipe(es.mapSync(function (f) {
if (!f.symlink) {
return f;
}
symlinks.push(f);
}))
.pipe(vfs.dest(out))
.pipe(es.through(null, function () {
var q = queue();
q.concurrency = 1;
q.timeout = 1000;
var that = this;
symlinks.forEach(function (f) {
q.push(function (cb) {
createSymlink(path.join(out, f.relative), f.symlink, cb);
});
});
q.start(function (err) {
if (err) {
that.emit('error', err);
} else {
that.emit('end');
}
});
}))
);
};