Skip to content

Commit affeda9

Browse files
authored
feat: Add deprecated warning for gulplog v1 messages (#266)
1 parent f06ff30 commit affeda9

File tree

6 files changed

+67
-2
lines changed

6 files changed

+67
-2
lines changed

lib/shared/log/to-console.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
'use strict';
22

3+
var messages = require('@gulpjs/messages');
4+
35
/* istanbul ignore next */
46
function noop() {}
57

@@ -17,6 +19,9 @@ function toConsole(log, opts, translate) {
1719
// Default loglevel to info level (3).
1820
var loglevel = opts.logLevel || 3;
1921

22+
var deprecatedPrinted = false;
23+
log.on('deprecated', onDeprecated);
24+
2025
// -L: Logs error events.
2126
if (loglevel > 0) {
2227
log.on('error', onError);
@@ -37,12 +42,33 @@ function toConsole(log, opts, translate) {
3742
}
3843

3944
return function () {
45+
log.removeListener('deprecated', onDeprecated);
4046
log.removeListener('error', onError);
4147
log.removeListener('warn', onWarn);
4248
log.removeListener('info', onInfo);
4349
log.removeListener('debug', onDebug);
4450
};
4551

52+
function onDeprecated() {
53+
if (!deprecatedPrinted) {
54+
var msg = { tag: messages.GULPLOG_DEPRECATED };
55+
// Get message and timestamp before printing anything to avoid
56+
// logging a half message if there's an error in one of them
57+
var message = translate.message(msg);
58+
var timestamp = translate.timestamp(msg);
59+
60+
if (message) {
61+
// Ensure timestamp is not written without a message
62+
if (timestamp) {
63+
process.stderr.write(timestamp + ' ');
64+
}
65+
console.error(message);
66+
}
67+
68+
deprecatedPrinted = true;
69+
}
70+
}
71+
4672
function onError(msg) {
4773
// Get message and timestamp before printing anything to avoid
4874
// logging a half message if there's an error in one of them

lib/shared/translate.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ function getDefaultMessage(data) {
103103
case messages.NPM_INSTALL_GULP: {
104104
return chalk.red('Try running: npm install gulp');
105105
}
106+
case messages.GULPLOG_DEPRECATED: {
107+
return chalk.yellow("gulplog v1 is deprecated. Please help your plugins update!");
108+
}
106109
case messages.COMPLETION_TYPE_MISSING: {
107110
return 'Missing completion type';
108111
}

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@
3030
"cover": "nyc mocha --async-only --timeout 5000 test/lib test"
3131
},
3232
"dependencies": {
33-
"@gulpjs/messages": "^1.0.0",
33+
"@gulpjs/messages": "^1.1.0",
3434
"chalk": "^4.1.2",
3535
"copy-props": "^4.0.0",
36-
"gulplog": "^2.1.0",
36+
"gulplog": "^2.2.0",
3737
"interpret": "^3.1.1",
3838
"liftoff": "^5.0.0",
3939
"mute-stdout": "^2.0.0",
@@ -47,6 +47,7 @@
4747
"@babel/core": "^7.20.2",
4848
"@babel/preset-env": "^7.20.2",
4949
"@babel/register": "^7.18.9",
50+
"@gulpjs/gulplog-v1": "npm:gulplog@1.0.0",
5051
"eslint": "^7.32.0",
5152
"eslint-config-gulp": "^5.0.1",
5253
"expect": "^27.5.1",

test/config-message-function.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,4 +472,19 @@ describe('config: message function', function() {
472472
done();
473473
}
474474
});
475+
476+
it('can change GULPLOG_DEPRECATED with .gulp.*', function(done) {
477+
var cwd = path.join(baseDir, 'GULPLOG_DEPRECATED');
478+
var expected = 'GULPLOG V1 IS DEPRECATED\n';
479+
480+
var opts = { cwd: cwd };
481+
exec(gulp(), opts, cb);
482+
483+
function cb(err, stdout, stderr) {
484+
expect(err).toBeNull();
485+
expect(stdout).toEqual('');
486+
expect(stderr).toEqual(expected);
487+
done();
488+
}
489+
});
475490
});
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
var messages = require('@gulpjs/messages');
2+
3+
module.exports = {
4+
message: function (data) {
5+
if (data.tag === messages.GULPLOG_DEPRECATED) {
6+
return 'GULPLOG V1 IS DEPRECATED';
7+
}
8+
9+
return false;
10+
},
11+
timestamp: function () {
12+
return false;
13+
}
14+
};
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
var gulplog = require('@gulpjs/gulplog-v1');
2+
3+
exports.default = function(done) {
4+
gulplog.error('Some error here');
5+
done();
6+
}

0 commit comments

Comments
 (0)