feat(CLI): Add deprecation summary for modern logs

This commit is contained in:
Piotr Grzesik 2021-09-15 13:18:56 +02:00
parent 7828cc77f1
commit 7eba95fcb7
2 changed files with 20 additions and 7 deletions

View File

@ -4,6 +4,7 @@ const chalk = require('chalk');
const weakMemoizee = require('memoizee/weak');
const _ = require('lodash');
const ServerlessError = require('../serverless-error');
const { style, legacy, log } = require('@serverless/utils/log');
const disabledDeprecationCodesByEnv = extractCodes(process.env.SLS_DEPRECATION_DISABLE);
@ -12,6 +13,8 @@ const notificationModeByEnv = process.env.SLS_DEPRECATION_NOTIFICATION_MODE;
const triggeredDeprecations = new Set();
const bufferedDeprecations = [];
const deprecationLogger = log.get('deprecation');
function extractCodes(codesStr) {
if (!codesStr) {
return new Set();
@ -54,11 +57,9 @@ function writeDeprecation(code, message) {
messageLines[i] = followingLinesPrefix + messageLines[i];
}
message = messageLines.join('\n');
process.stdout.write(
`Serverless: ${chalk.keyword('orange')(`Deprecation warning: ${message}`)}\n`
);
legacy.write(`Serverless: ${chalk.keyword('orange')(`Deprecation warning: ${message}`)}\n`);
if (!code.startsWith('EXT_')) {
process.stdout.write(
legacy.write(
` ${chalk.keyword('orange')(
`More Info: https://www.serverless.com/framework/docs/deprecations/#${code}`
)}\n`
@ -113,15 +114,27 @@ module.exports.flushBuffered = () => {
module.exports.printSummary = () => {
if (!bufferedDeprecations.length) return;
deprecationLogger.warning();
try {
if (bufferedDeprecations.length === 1) {
deprecationLogger.warning(
style.aside("1 deprecation found: run 'serverless doctor' for more details")
);
const { code, message } = bufferedDeprecations[0];
writeDeprecation(code, message);
return;
}
deprecationLogger.warning(
style.aside(
`${bufferedDeprecations.length} deprecations found: run 'serverless doctor' for more details`
)
);
const prefix = 'Serverless: ';
process.stdout.write(`${prefix}${chalk.bold.keyword('orange')('Deprecation warnings:')}\n\n`);
legacy.write(`${prefix}${chalk.bold.keyword('orange')('Deprecation warnings:')}\n\n`);
for (const { code, message } of bufferedDeprecations) {
const messageLines = chalk.bold(message).split('\n');
if (!code.startsWith('EXT_')) {
@ -130,7 +143,7 @@ module.exports.printSummary = () => {
);
}
process.stdout.write(chalk.keyword('orange')(`${messageLines.join('\n')}\n\n`));
legacy.write(chalk.keyword('orange')(`${messageLines.join('\n')}\n\n`));
}
} finally {
bufferedDeprecations.length = 0;

View File

@ -26,7 +26,7 @@
"@serverless/components": "^3.17.0",
"@serverless/dashboard-plugin": "^5.4.4",
"@serverless/platform-client": "^4.3.0",
"@serverless/utils": "^5.12.0",
"@serverless/utils": "^5.13.0",
"ajv": "^6.12.6",
"ajv-keywords": "^3.5.2",
"archiver": "^5.3.0",