* Validates usage by examining task and flag invocation. * @param {object} task * @param {string} taskName * @param {TaskFuncDef} taskFunc
(task, taskName, taskFunc)
| 248 | * @param {TaskFuncDef} taskFunc |
| 249 | */ |
| 250 | function validateUsage(task, taskName, taskFunc) { |
| 251 | const tasks = argv._; |
| 252 | const invalidTasks = tasks.filter((task) => task != taskName); |
| 253 | |
| 254 | const flags = Object.keys(argv).slice(1); // Everything after '_' |
| 255 | const validFlags = taskFunc.flags ? Object.keys(taskFunc.flags) : []; |
| 256 | const invalidFlags = flags.filter((flag) => !validFlags.includes(flag)); |
| 257 | |
| 258 | if (invalidTasks.length > 0 || invalidFlags.length > 0) { |
| 259 | task.addHelpText('before', red('ERROR: ') + 'Invalid usage'); |
| 260 | task.help({error: true}); |
| 261 | } |
| 262 | } |
| 263 | |
| 264 | /** |
| 265 | * Finalizes the task runner by doing special-case setup for `amp --help`, |
no test coverage detected