From 7eba95fcb7f9b09a8a2aebd50c433f92e15cac97 Mon Sep 17 00:00:00 2001 From: Piotr Grzesik Date: Wed, 15 Sep 2021 13:18:56 +0200 Subject: [PATCH] feat(CLI): Add deprecation summary for modern logs --- lib/utils/logDeprecation.js | 25 +++++++++++++++++++------ package.json | 2 +- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/lib/utils/logDeprecation.js b/lib/utils/logDeprecation.js index 66e5bdb55..77444e2f1 100644 --- a/lib/utils/logDeprecation.js +++ b/lib/utils/logDeprecation.js @@ -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; diff --git a/package.json b/package.json index 85877b5cb..48e2d9e2a 100644 --- a/package.json +++ b/package.json @@ -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",