gulp-function/dist/index.js
2016-03-26 17:22:46 +01:00

68 lines
7.8 KiB
JavaScript

/// <reference path="typings/main.d.ts" />
var plugins = {
beautylog: require("beautylog"),
Q: require("q"),
through: require("through2")
};
module.exports = function (functionsToExecuteArg, executionModeArg) {
if (executionModeArg === void 0) { executionModeArg = 'forEach'; }
//important vars
var executionMode = executionModeArg; //can be forEach or atEnd
var functionsToExecute = functionsToExecuteArg;
var promiseArray = [];
var runFunction = function (functionArg) {
var returnValue = functionArg();
if (typeof returnValue !== "undefined" && typeof returnValue.then !== "undefined") {
promiseArray.push(returnValue);
}
};
var checkAndRunFunction = function () {
if (typeof functionsToExecute === "function") {
runFunction(functionsToExecute);
}
else if (Array.isArray(functionsToExecute)) {
for (var anyFunction in functionsToExecute) {
runFunction(functionsToExecute[anyFunction]);
}
}
else {
plugins.beautylog.error('gulp-callfunction: something is strange with the given arguments');
}
return plugins.Q.all(promiseArray);
};
var hasExecutedOnce = false;
var forEach = function (file, enc, cb) {
switch (executionMode) {
case "forEach":
checkAndRunFunction().then(function () {
cb(null, file);
});
break;
case "forFirst":
!hasExecutedOnce ? checkAndRunFunction().then(function () {
cb(null, file);
}) : cb(null, file);
hasExecutedOnce = true;
break;
case "atEnd":
cb(null, file);
break;
default:
break;
}
};
var atEnd = function (cb) {
if (executionMode === "atEnd") {
checkAndRunFunction().then(function () {
cb();
});
}
else {
cb();
}
};
return plugins.through.obj(forEach, atEnd);
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBDQUEwQztBQUUxQyxJQUFJLE9BQU8sR0FBRztJQUNWLFNBQVMsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDO0lBQy9CLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDO0lBQ2YsT0FBTyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUM7Q0FDL0IsQ0FBQTtBQUtELE1BQU0sQ0FBQyxPQUFPLEdBQUcsVUFBVSxxQkFBK0IsRUFBQyxnQkFBbUM7SUFBbkMsZ0NBQW1DLEdBQW5DLDRCQUFtQztJQUMxRixnQkFBZ0I7SUFDaEIsSUFBSSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyx5QkFBeUI7SUFDL0QsSUFBSSxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQztJQUMvQyxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDdEIsSUFBSSxXQUFXLEdBQUcsVUFBUyxXQUFXO1FBQ2xDLElBQUksV0FBVyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sV0FBVyxLQUFLLFdBQVcsSUFBSSxPQUFPLFdBQVcsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNoRixZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRixJQUFJLG1CQUFtQixHQUFHO1FBQ3RCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sa0JBQWtCLEtBQUssVUFBVyxDQUFDLENBQUMsQ0FBQztZQUM1QyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsR0FBRyxDQUFDLENBQUMsSUFBSSxXQUFXLElBQUksa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2dCQUN6QyxXQUFXLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNqRCxDQUFDO1FBQ0wsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0VBQWtFLENBQUMsQ0FBQztRQUNoRyxDQUFDO1FBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQztJQUVGLElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQztJQUM1QixJQUFJLE9BQU8sR0FBRyxVQUFVLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNqQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQSxDQUFDO1lBQ25CLEtBQUssU0FBUztnQkFDVixtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQztvQkFDdkIsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsS0FBSyxDQUFDO1lBQ1YsS0FBSyxVQUFVO2dCQUNYLENBQUMsZUFBZSxHQUFHLG1CQUFtQixFQUFFLENBQUMsSUFBSSxDQUFDO29CQUMxQyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNuQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNwQixlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUN2QixLQUFLLENBQUM7WUFDVixLQUFLLE9BQU87Z0JBQ1IsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDZixLQUFLLENBQUM7WUFDVjtnQkFDSSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUYsSUFBSSxLQUFLLEdBQUcsVUFBUyxFQUFFO1FBQ25CLEVBQUUsQ0FBQyxDQUFDLGFBQWEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzVCLG1CQUFtQixFQUFFLENBQUMsSUFBSSxDQUFDO2dCQUN2QixFQUFFLEVBQUUsQ0FBQztZQUNULENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osRUFBRSxFQUFFLENBQUM7UUFDVCxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBQ0YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBQyxLQUFLLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQUMiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwidHlwaW5ncy9tYWluLmQudHNcIiAvPlxuXG52YXIgcGx1Z2lucyA9IHtcbiAgICBiZWF1dHlsb2c6IHJlcXVpcmUoXCJiZWF1dHlsb2dcIiksXG4gICAgUTogcmVxdWlyZShcInFcIiksXG4gICAgdGhyb3VnaDogcmVxdWlyZShcInRocm91Z2gyXCIpXG59XG5cblxuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZ1bmN0aW9uc1RvRXhlY3V0ZUFyZzphbnl8YW55W10sZXhlY3V0aW9uTW9kZUFyZzpzdHJpbmcgPSAnZm9yRWFjaCcpIHtcbiAgICAvL2ltcG9ydGFudCB2YXJzXG4gICAgbGV0IGV4ZWN1dGlvbk1vZGUgPSBleGVjdXRpb25Nb2RlQXJnOyAvL2NhbiBiZSBmb3JFYWNoIG9yIGF0RW5kXG4gICAgbGV0IGZ1bmN0aW9uc1RvRXhlY3V0ZSA9IGZ1bmN0aW9uc1RvRXhlY3V0ZUFyZztcbiAgICBsZXQgcHJvbWlzZUFycmF5ID0gW107XG4gICAgbGV0IHJ1bkZ1bmN0aW9uID0gZnVuY3Rpb24oZnVuY3Rpb25Bcmcpe1xuICAgICAgICBsZXQgcmV0dXJuVmFsdWUgPSBmdW5jdGlvbkFyZygpO1xuICAgICAgICBpZiAodHlwZW9mIHJldHVyblZhbHVlICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiByZXR1cm5WYWx1ZS50aGVuICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBwcm9taXNlQXJyYXkucHVzaChyZXR1cm5WYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgbGV0IGNoZWNrQW5kUnVuRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZnVuY3Rpb25zVG9FeGVjdXRlID09PSBcImZ1bmN0aW9uXCIgKSB7XG4gICAgICAgICAgICBydW5GdW5jdGlvbihmdW5jdGlvbnNUb0V4ZWN1dGUpO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZnVuY3Rpb25zVG9FeGVjdXRlKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgYW55RnVuY3Rpb24gaW4gZnVuY3Rpb25zVG9FeGVjdXRlKSB7XG4gICAgICAgICAgICAgICAgcnVuRnVuY3Rpb24oZnVuY3Rpb25zVG9FeGVjdXRlW2FueUZ1bmN0aW9uXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwbHVnaW5zLmJlYXV0eWxvZy5lcnJvcignZ3VscC1jYWxsZnVuY3Rpb246IHNvbWV0aGluZyBpcyBzdHJhbmdlIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwbHVnaW5zLlEuYWxsKHByb21pc2VBcnJheSk7XG4gICAgfTtcblxuICAgIGxldCBoYXNFeGVjdXRlZE9uY2UgPSBmYWxzZTtcbiAgICBsZXQgZm9yRWFjaCA9IGZ1bmN0aW9uIChmaWxlLCBlbmMsIGNiKSB7IC8vdGhlIGZvckVhY2ggZnVuY3Rpb24gaXMgY2FsbGVkIGZvciBldmVyeSBjaHVua1xuICAgICAgICBzd2l0Y2ggKGV4ZWN1dGlvbk1vZGUpe1xuICAgICAgICAgICAgY2FzZSBcImZvckVhY2hcIjpcbiAgICAgICAgICAgICAgICBjaGVja0FuZFJ1bkZ1bmN0aW9uKCkudGhlbihmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICBjYihudWxsLCBmaWxlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJmb3JGaXJzdFwiOlxuICAgICAgICAgICAgICAgICFoYXNFeGVjdXRlZE9uY2UgPyBjaGVja0FuZFJ1bkZ1bmN0aW9uKCkudGhlbihmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICBjYihudWxsLCBmaWxlKTtcbiAgICAgICAgICAgICAgICB9KSA6IGNiKG51bGwsIGZpbGUpO1xuICAgICAgICAgICAgICAgIGhhc0V4ZWN1dGVkT25jZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiYXRFbmRcIjpcbiAgICAgICAgICAgICAgICBjYihudWxsLCBmaWxlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgbGV0IGF0RW5kID0gZnVuY3Rpb24oY2IpIHtcbiAgICAgICAgaWYgKGV4ZWN1dGlvbk1vZGUgPT09IFwiYXRFbmRcIikge1xuICAgICAgICAgICAgY2hlY2tBbmRSdW5GdW5jdGlvbigpLnRoZW4oZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBjYigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYigpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gcGx1Z2lucy50aHJvdWdoLm9iaihmb3JFYWNoLGF0RW5kKTtcbn07XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=