UNPKG

gulptraum

Version:

Smart task generator for gulp to get a build pipeline and more in seconds.

81 lines (52 loc) 1.8 kB
import {IGroupedPluginKeys} from '../interfaces'; function sortTaskNames(taskNames) { const taskNamesSorted = taskNames.sort((nameA, nameB) => { if (nameA < nameB) { return -1; } if (nameA > nameB) { return 1; } return 0; }); return taskNamesSorted; } function generate(gulp, config, gulptraum) { gulp.task('tasks', () => { const taskNames = Object.keys(gulp.tasks); const groupedPluginKeys: IGroupedPluginKeys = {}; for (const taskName of taskNames) { let topLevelTaskName = null; if (taskName.indexOf('-') > 0) { const taskNameSegments = taskName.split('-'); topLevelTaskName = taskNameSegments[0]; } else { topLevelTaskName = taskName; } const groupHasMatchingKey: boolean = groupedPluginKeys[topLevelTaskName] !== undefined; if (groupHasMatchingKey) { groupedPluginKeys[topLevelTaskName].push(taskName); } else { groupedPluginKeys[topLevelTaskName] = [taskName]; } } const groupKeys = Object.keys(groupedPluginKeys); groupKeys.forEach((groupKey) => { const groupTasks = groupedPluginKeys[groupKey]; const groupTasksOrdered = sortTaskNames(groupTasks); console.log('--------------------------------------------------'); for (let i = 0; i < groupTasksOrdered.length; i++) { console.log(`----- ${groupTasksOrdered[i]}`); if (i === 0 && groupTasksOrdered.length > 1) { console.log('----------------------------------------'); } } console.log('--------------------------------------------------'); }); }); } export const command = { generate: generate, name: 'tasks', help: 'Outputs an orderes list of all tasks registered to gulp.', };