Skip to content

Commit b43bc32

Browse files
committed
Fix: Reintroduce color-support & --no-color flag
1 parent b2acee5 commit b43bc32

File tree

3 files changed

+81
-1
lines changed

3 files changed

+81
-1
lines changed

index.js

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,30 @@
44
*/
55
var gray = require('ansi-gray');
66
var timestamp = require('time-stamp');
7+
var supportsColor = require('color-support');
8+
9+
function hasFlag(flag) {
10+
return (process.argv.indexOf('--' + flag) !== -1);
11+
}
12+
13+
function addColor(str) {
14+
if (hasFlag('no-color')) {
15+
return str;
16+
}
17+
18+
if (hasFlag('color')) {
19+
return gray(str);
20+
}
21+
22+
if (supportsColor()) {
23+
return gray(str);
24+
}
25+
26+
return str;
27+
}
728

829
function getTimestamp(){
9-
return '['+gray(timestamp('HH:mm:ss'))+']';
30+
return '['+addColor(timestamp('HH:mm:ss'))+']';
1031
}
1132

1233
function log(){

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
},
2222
"dependencies": {
2323
"ansi-gray": "^0.1.1",
24+
"color-support": "^1.1.3",
2425
"time-stamp": "^1.0.0"
2526
},
2627
"devDependencies": {

test.js

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ var log = require('./');
1313

1414
lab.describe('log()', function(){
1515

16+
var term = process.env.TERM;
17+
var colorterm = process.env.COLORTERM;
1618
var stdout_write = process.stdout.write;
1719
var writtenValue = '';
1820

@@ -55,6 +57,62 @@ lab.describe('log()', function(){
5557

5658
done();
5759
});
60+
61+
lab.it('does not add color if argv contains --no-color', function(done) {
62+
// Stub process.stdout.write
63+
process.stdout.write = writeSpy;
64+
65+
process.argv.push('--no-color');
66+
67+
log(1, 2, 3, 4, 'five');
68+
var time = timestamp('HH:mm:ss');
69+
code.expect(writtenValue).equals('[' + time + '] 1 2 3 4 \'five\'\n');
70+
71+
// Restore process.stdout.write after test
72+
process.stdout.write = stdout_write;
73+
74+
process.argv.pop();
75+
76+
done();
77+
});
78+
79+
lab.it('adds color if argv contains --color', function(done) {
80+
// Stub process.stdout.write
81+
process.stdout.write = writeSpy;
82+
83+
process.argv.push('--color');
84+
85+
log(1, 2, 3, 4, 'five');
86+
var time = timestamp('HH:mm:ss');
87+
code.expect(writtenValue).equals('[' + gray(time) + '] 1 2 3 4 \'five\'\n');
88+
89+
// Restore process.stdout.write after test
90+
process.stdout.write = stdout_write;
91+
92+
process.argv.pop();
93+
94+
done();
95+
});
96+
97+
lab.it('does not add color if no support', function(done) {
98+
// Stub process.stdout.write
99+
process.stdout.write = writeSpy;
100+
101+
process.env.TERM = 'dumb';
102+
delete process.env.COLORTERM;
103+
104+
log(1, 2, 3, 4, 'five');
105+
var time = timestamp('HH:mm:ss');
106+
code.expect(writtenValue).equals('[' + time + '] 1 2 3 4 \'five\'\n');
107+
108+
// Restore process.stdout.write after test
109+
process.stdout.write = stdout_write;
110+
111+
process.env.TERM = term;
112+
process.env.COLORTERM = colorterm;
113+
114+
done();
115+
});
58116
});
59117

60118
lab.describe('log.info()', function(){

0 commit comments

Comments
 (0)