UNPKG

gulp-help

Version:

Adds a default help task to gulp and provides the ability to add custom help messages to your gulp tasks

40 lines (37 loc) 1.28 kB
/** * @param {object} tasksObj - gulp.tasks * * returns: * margin - length of longest task / options name * hasOptions - true if any task has option(s) * * @returns {{margin: number, hasOptions: boolean}} */ module.exports = function (tasksObj) { var hasOptions = false; var margin = Object.keys(tasksObj).reduce(function (m, taskName) { var optionsMargin = 0, opts; // if exists, iterate options list to calculate margin for options var includeAll = process.argv.indexOf('--all') !== -1; if (includeAll || (tasksObj[taskName].help && tasksObj[taskName].help.options)) { var help = tasksObj[taskName].help || {options: {}}; opts = Object.keys(help.options).sort(); optionsMargin = opts.reduce(function (m, opt) { // if, at any time while iterating the tasks array, we also iterate an opts array, set hasOptions flag hasOptions = true; return m > opt.length ? m : opt.length; }, 0); } if (!(tasksObj[taskName].help || includeAll) || (m > taskName.length && m > optionsMargin)) { return m; } else if (optionsMargin > taskName.length) { return optionsMargin; } else { return taskName.length; } }, 0); return { margin: margin, hasOptions: hasOptions }; };