Skip to content

Commit a4236f2

Browse files
sttkphated
authored andcommitted
Fix: Suppress logging when --tasks-json, --help, --version flag is specified (closes #157) (#159)
1 parent be9d25a commit a4236f2

File tree

10 files changed

+121
-20
lines changed

10 files changed

+121
-20
lines changed

.eslintrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"extends": "gulp",
33
"rules": {
4+
"max-len": [1, 90],
45
"max-statements": [1, 40],
56
"no-console": "off"
67
}

index.js

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,6 @@ var usage =
6161
var parser = yargs.usage(usage, cliOptions);
6262
var opts = parser.argv;
6363

64-
// Set up event listeners for logging temporarily.
65-
toConsole(log, opts);
66-
6764
cli.on('require', function(name) {
6865
log.info('Requiring external module', ansi.magenta(name));
6966
});
@@ -85,21 +82,22 @@ cli.on('respawn', function(flags, child) {
8582
log.info('Respawned to PID:', pid);
8683
});
8784

88-
8985
function run() {
9086
cli.prepare({
9187
cwd: opts.cwd,
9288
configPath: opts.gulpfile,
9389
require: opts.require,
9490
completion: opts.completion,
9591
}, function(env) {
96-
9792
var cfgLoadOrder = ['home', 'cwd'];
9893
var cfg = loadConfigFiles(env.configFiles['.gulp'], cfgLoadOrder);
9994
opts = mergeConfigToCliFlags(opts, cfg);
10095
env = mergeConfigToEnvFlags(env, cfg);
10196
env.configProps = cfg;
10297

98+
// Set up event listeners for logging again after configuring.
99+
toConsole(log, opts);
100+
103101
cli.execute(env, handleArguments);
104102
});
105103
}
@@ -117,18 +115,16 @@ function handleArguments(env) {
117115
process.env.UNDERTAKER_SETTLE = 'true';
118116
}
119117

120-
// Set up event listeners for logging again after configuring.
121-
toConsole(log, opts);
122-
123118
if (opts.help) {
124119
parser.showHelp(console.log);
125120
exit(0);
126121
}
127122

123+
// Anything that needs to print outside of the logging mechanism should use console.log
128124
if (opts.version) {
129-
log.info('CLI version', cliVersion);
125+
console.log('CLI version', cliVersion);
130126
if (env.modulePackage && typeof env.modulePackage.version !== 'undefined') {
131-
log.info('Local version', env.modulePackage.version);
127+
console.log('Local version', env.modulePackage.version);
132128
}
133129
exit(0);
134130
}

lib/shared/log/to-console.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ function toConsole(log, opts) {
3232

3333
// Return immediately if logging is
3434
// not desired.
35-
if (opts.tasksSimple || opts.silent) {
35+
if (opts.tasksSimple || opts.tasksJson || opts.help || opts.version || opts.silent) {
3636
// Keep from crashing process when silent.
3737
log.on('error', noop);
3838
return;

test/config-flags-gulpfile.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,14 @@ describe('config: flags.gulpfile', function() {
100100
function cb(err, stdout, stderr) {
101101
expect(err).toEqual(null);
102102
expect(stderr).toEqual('');
103-
expect(eraseTime(stdout)).toEqual(
104-
'Requiring external module babel-register\n' +
105-
'clean!\n' +
106-
'build!\n' +
107-
'');
103+
104+
var requiring = eraseTime(headLines(stdout, 1));
105+
expect(requiring).toEqual('Requiring external module babel-register');
106+
var clean = eraseTime(headLines(stdout, 1, 4));
107+
expect(clean).toEqual('clean!');
108+
var build = eraseTime(headLines(stdout, 1, 7));
109+
expect(build).toEqual('build!');
110+
108111
done(err);
109112
}
110113
});
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
{
22
"flags": {
3-
"silent": true,
43
"gulpfile": "other_folder/gulpfile-exports.babel.js"
54
}
65
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
'use strict';
2+
3+
var gulp = require('gulp');
4+
5+
function noop(cb) {
6+
cb();
7+
}
8+
9+
function described(cb) {
10+
cb();
11+
}
12+
13+
function delayed(cb) {
14+
setTimeout(cb, 100);
15+
}
16+
17+
function errorFunction() {
18+
throw new Error('Error!');
19+
}
20+
function anon(cb) {
21+
cb();
22+
}
23+
24+
function notCompleting1() {
25+
// Callback is not called
26+
}
27+
28+
function notCompleting2() {
29+
// Callback is not called
30+
}
31+
32+
described.description = 'description';
33+
34+
gulp.task('test1', gulp.series(noop));
35+
gulp.task('test2', gulp.series('test1', noop));
36+
gulp.task('test3', gulp.series(described));
37+
gulp.task('test4', gulp.series(errorFunction, anon));
38+
gulp.task('test5', delayed);
39+
gulp.task('test6', noop);
40+
gulp.task('test7', notCompleting1);
41+
gulp.task('test8', notCompleting2);
42+
43+
gulp.task('default', gulp.series('test1', 'test3', noop));

test/flags-help.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,18 @@ describe('flag: --help', function() {
4444
}
4545
});
4646

47+
it('avoids printing "Requiring external module *"', function(done) {
48+
runner({ verbose: false })
49+
.gulp('--help --gulpfile ./test/fixtures/gulpfiles/gulpfile-babel.babel.js')
50+
.run(cb);
51+
52+
function cb(err, stdout, stderr) {
53+
expect(err).toEqual(null);
54+
expect(stderr).toEqual('');
55+
stdout = eraseFirstSpace(stdout);
56+
expect(stdout).toEqual(outputText);
57+
done(err);
58+
}
59+
});
60+
4761
});

test/flags-tasks-json.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ describe('flag: --tasks-json', function() {
1919
function cb(err, stdout, stderr) {
2020
expect(err).toEqual(null);
2121
expect(stderr).toEqual('');
22-
stdout = skipLines(stdout, 1);
2322
expect(JSON.parse(stdout)).toEqual(expected);
2423
done(err);
2524
}
@@ -48,4 +47,19 @@ describe('flag: --tasks-json', function() {
4847
}
4948
});
5049

50+
it('avoids printing "Requiring external module *"', function(done) {
51+
// Disable the timeout for old node versions
52+
this.timeout(0);
53+
54+
runner({ verbose: false })
55+
.gulp('--tasks-json --gulpfile ./test/fixtures/gulpfiles/gulpfile-babel.babel.js')
56+
.run(cb);
57+
58+
function cb(err, stdout, stderr) {
59+
expect(err).toEqual(null);
60+
expect(stderr).toEqual('');
61+
expect(JSON.parse(stdout)).toEqual(expected);
62+
done(err);
63+
}
64+
});
5165
});

test/flags-tasks-simple.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,20 @@ describe('flag: --tasks-simple', function() {
2323
}
2424
});
2525

26+
it('avoids printing "Requiring external module *"', function(done) {
27+
// Disable the timeout for old node versions
28+
this.timeout(0);
29+
30+
runner({ verbose: false })
31+
.gulp('--tasks-simple --gulpfile ./test/fixtures/gulpfiles/gulpfile-babel.babel.js')
32+
.run(cb);
33+
34+
function cb(err, stdout, stderr) {
35+
expect(err).toEqual(null);
36+
expect(stderr).toEqual('');
37+
expect(stdout).toEqual(outputText);
38+
done(err);
39+
}
40+
});
41+
2642
});

test/flags-version.js

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
var expect = require('expect');
44
var runner = require('gulp-test-tools').gulpRunner;
5-
var eraseTime = require('gulp-test-tools').eraseTime;
65

76
var cliVersion = require('../package.json').version;
87
var gulpVersion = require('gulp/package.json').version;
@@ -17,7 +16,23 @@ describe('flag: --version', function() {
1716
function cb(err, stdout, stderr) {
1817
expect(err).toEqual(null);
1918
expect(stderr).toEqual('');
20-
stdout = eraseTime(stdout);
19+
expect(stdout).toEqual(
20+
'CLI version ' + cliVersion + '\n' +
21+
'Local version ' + gulpVersion + '\n' +
22+
''
23+
);
24+
done(err);
25+
}
26+
});
27+
28+
it('avoids printing "Requiring external module *"', function(done) {
29+
runner({ verbose: false })
30+
.gulp('--version --gulpfile ./test/fixtures/gulpfiles/gulpfile-babel.babel.js')
31+
.run(cb);
32+
33+
function cb(err, stdout, stderr) {
34+
expect(err).toEqual(null);
35+
expect(stderr).toEqual('');
2136
expect(stdout).toEqual(
2237
'CLI version ' + cliVersion + '\n' +
2338
'Local version ' + gulpVersion + '\n' +

0 commit comments

Comments
 (0)