From 4034b980b51390962c22b7237eca1355da1a9d4d Mon Sep 17 00:00:00 2001 From: Karan Shah Date: Thu, 17 Feb 2022 10:10:58 +0000 Subject: [PATCH] Make Airbrake config optional in dev Signed-off-by: Karan Shah --- .../src/config/ExtractAirbrakeConfig.ts | 27 ++++++++++++++++--- .../src/service/standaloneServer.ts | 2 +- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts index ea39a27d11..20542ccbde 100644 --- a/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts +++ b/plugins/airbrake-backend/src/config/ExtractAirbrakeConfig.ts @@ -14,6 +14,7 @@ * limitations under the License. */ import { Config } from '@backstage/config'; +import * as winston from 'winston'; /** * The configuration needed for the airbrake-backend plugin @@ -33,9 +34,27 @@ export interface AirbrakeConfig { * @public * * @param config - The config object to extract from + * @param logger - THe logger object */ -export function extractAirbrakeConfig(config: Config): AirbrakeConfig { - return { - apiKey: config.getString('airbrake.apiKey'), - }; +export function extractAirbrakeConfig( + config: Config, + logger: winston.Logger, +): AirbrakeConfig { + try { + return { + apiKey: config.getString('airbrake.apiKey'), + }; + } catch (e) { + if (process.env.NODE_ENV !== 'development') { + throw e; + } else { + logger.warn( + 'Airbrake config missing, Airbrake plugin will probably not work', + e, + ); + return { + apiKey: '', + }; + } + } } diff --git a/plugins/airbrake-backend/src/service/standaloneServer.ts b/plugins/airbrake-backend/src/service/standaloneServer.ts index 6825e60a0a..2f2de71fa1 100644 --- a/plugins/airbrake-backend/src/service/standaloneServer.ts +++ b/plugins/airbrake-backend/src/service/standaloneServer.ts @@ -34,7 +34,7 @@ export async function startStandaloneServer( ): Promise { const logger = options.logger.child({ service: 'airbrake-backend' }); const config = await loadBackendConfig({ logger, argv: process.argv }); - const airbrakeConfig = extractAirbrakeConfig(config); + const airbrakeConfig = extractAirbrakeConfig(config, logger); logger.debug('Starting application server...'); const router = await createRouter({ logger,