grunt icon indicating copy to clipboard operation
grunt copied to clipboard

grunt.task.isTaskAlias not working

Open stevenvachon opened this issue 11 years ago • 4 comments

It's always returning false. So, I ran some tests:

grunt.registerTask("test", "", function(){});

grunt.registerTask("bleh", ["test"]);
grunt.registerTask("default", ["test"]);

console.log( grunt.task._tasks["bleh"].fn.alias );    // undefined
console.log( grunt.task._tasks["bleh"].info );        // "Alias for..."

console.log( grunt.task._tasks["default"].fn.alias );    // undefined
console.log( grunt.task._tasks["default"].info );        // "Alias for..."

console.log( this.task._tasks["default"].fn.alias );    // undefined
console.log( this.task._tasks["default"].info );        // "Alias for..."

stevenvachon avatar Mar 09 '14 02:03 stevenvachon

This does work in tests though https://github.com/gruntjs/grunt/blob/master/test/util/task_test.js#L62

vladikoff avatar Mar 09 '14 02:03 vladikoff

After looking at https://github.com/gruntjs/grunt/blob/v0.4.3/lib/grunt/task.js#L45-L47, I added:

// Support public use of task.isTaskAlias
if (_fn.alias) {
    thisTask.fn.alias = _fn.alias;
}

on line 84, right after the thisTask.fn=function(){…}, and it fixes the issue.

I wonder if anyone think twice about implementing this fix considering that grunt.task.isTaskAlias is an undocumented function. As a plugin developer, I'm currently finding it useful for extending Grunt's core features, not so much for typical plugins.

stevenvachon avatar Mar 09 '14 02:03 stevenvachon

This is a less than pretty work-around:

var queuedTask = grunt.task._queue["default"];

if ( !queuedTask.task.multi ||
      queuedTask.task.multi && queuedTask.args.length
   ) {
    console.log("not an alias");
}

stevenvachon avatar Mar 09 '14 03:03 stevenvachon

This issue was never referenced, so it was probably never fixed. Re-opening for core team to see again.

stevenvachon avatar Feb 21 '16 16:02 stevenvachon