Skip to content

Commit 5a4c4c7

Browse files
author
Contra
committed
task_not_found logging. closes gulpjs#55
1 parent cac358f commit 5a4c4c7

File tree

2 files changed

+25
-8
lines changed

2 files changed

+25
-8
lines changed

bin/gulp.js

+10-4
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,11 @@ function loadGulpFile(localGulp, gulpFile, tasks){
105105
function getGulpFile(baseDir) {
106106
var extensions;
107107
if (require.extensions) {
108-
extensions = Object.keys(require.extensions).join(",");
108+
extensions = Object.keys(require.extensions).join(',');
109109
} else {
110110
extensions = ['.js','.coffee'];
111111
}
112-
var gulpFile = findup("Gulpfile{"+extensions+"}", {nocase: true});
112+
var gulpFile = findup('Gulpfile{'+extensions+'}', {nocase: true});
113113
return gulpFile;
114114
}
115115

@@ -128,12 +128,18 @@ function logEvents(gulp) {
128128

129129
gulp.on('task_stop', function(e){
130130
var time = prettyTime(e.hrDuration);
131-
gutil.log('Finished', "'"+gutil.colors.cyan(e.task)+"'", "in", gutil.colors.magenta(time));
131+
gutil.log('Finished', "'"+gutil.colors.cyan(e.task)+"'", 'in', gutil.colors.magenta(time));
132132
});
133133

134134
gulp.on('task_err', function(e){
135135
var msg = formatError(e);
136136
var time = prettyTime(e.hrDuration);
137-
gutil.log('Errored', "'"+gutil.colors.cyan(e.task)+"'", "in", gutil.colors.magenta(time), gutil.colors.red(msg));
137+
gutil.log('Errored', "'"+gutil.colors.cyan(e.task)+"'", 'in', gutil.colors.magenta(time), gutil.colors.red(msg));
138+
});
139+
140+
gulp.on('task_not_found', function(name){
141+
gutil.log(gutil.colors.red("Task '"+name+"' was not defined in your gulpfile but you tried to run it."));
142+
gutil.log('Please check the documentation for proper gulpfile formatting.');
143+
process.exit(1);
138144
});
139145
}

index.js

+15-4
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,26 @@ Gulp.prototype.taskQueue = Gulp.prototype.seq;
1616
Gulp.prototype.task = Gulp.prototype.add;
1717
Gulp.prototype.run = function(){
1818
// impose our opinion of "default" tasks onto orchestrator
19-
var tasks = arguments.length ? arguments : ['default'];
19+
var tasks = arguments.length ? Array.prototype.slice.call(arguments) : ['default'];
20+
21+
// check if tasks were defined
22+
// orchestrator will fail
23+
// but we just want to emit an event so the CLI can error nicely
24+
tasks.forEach(function(name){
25+
if (this.tasks[name]) return;
26+
this.emit('task_not_found', name);
27+
}, this);
28+
2029
this.start.apply(this, tasks);
2130
};
2231

2332
Gulp.prototype.src = require('./lib/createInputStream');
2433
Gulp.prototype.dest = require('./lib/createOutputStream');
2534
Gulp.prototype.watch = require('glob-watcher');
2635

27-
var gulp = new Gulp();
28-
gulp.Gulp = Gulp;
36+
// let people use this class from our instance
37+
Gulp.prototype.Gulp = Gulp;
38+
39+
var inst = new Gulp();
2940

30-
module.exports = gulp;
41+
module.exports = inst;

0 commit comments

Comments
 (0)