From: Jérôme Benoit Date: Thu, 16 Apr 2026 20:26:06 +0000 (+0200) Subject: refactor(cli): extract extractErrorMessage utility X-Git-Tag: cli@v4.5.0~60 X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=a0ba4b54c0ffe51408cd2e638231225c86510fae;p=e-mobility-charging-stations-simulator.git refactor(cli): extract extractErrorMessage utility Create ui/cli/src/utils/errors.ts with extractErrorMessage(error: unknown): string and replace 3 inline occurrences of the pattern across formatter.ts, json.ts, and loader.ts. --- diff --git a/ui/cli/src/config/loader.ts b/ui/cli/src/config/loader.ts index 423106e1..56d9e59a 100644 --- a/ui/cli/src/config/loader.ts +++ b/ui/cli/src/config/loader.ts @@ -9,6 +9,7 @@ import { type UIServerConfigurationSection, } from 'ui-common' +import { extractErrorMessage } from '../utils/errors.js' import { DEFAULT_PROTOCOL, DEFAULT_SECURE, DEFAULT_VERSION } from './defaults.js' interface LoadConfigOptions { @@ -69,7 +70,7 @@ const loadConfigFile = async ( configPath != null || !(error instanceof Error && 'code' in error && error.code === 'ENOENT') ) { - const message = error instanceof Error ? error.message : String(error) + const message = extractErrorMessage(error) const context = configPath != null ? `'${configPath}'` : `'${targetPath}'` throw new Error(`Failed to load configuration file ${context}: ${message}`, { cause: error }) } diff --git a/ui/cli/src/output/formatter.ts b/ui/cli/src/output/formatter.ts index 3540b5b1..d3ae953a 100644 --- a/ui/cli/src/output/formatter.ts +++ b/ui/cli/src/output/formatter.ts @@ -1,5 +1,6 @@ import type { ResponsePayload } from 'ui-common' +import { extractErrorMessage } from '../utils/errors.js' import { printError } from './human.js' import { outputJson, outputJsonError } from './json.js' import { outputTable } from './table.js' @@ -18,7 +19,7 @@ export const createFormatter = (jsonMode: boolean): Formatter => { } return { error: (error: unknown) => { - const message = error instanceof Error ? error.message : String(error) + const message = extractErrorMessage(error) printError(message) }, output: outputTable, diff --git a/ui/cli/src/output/json.ts b/ui/cli/src/output/json.ts index e62f8ae4..9287e761 100644 --- a/ui/cli/src/output/json.ts +++ b/ui/cli/src/output/json.ts @@ -1,12 +1,14 @@ import process from 'node:process' import { type ResponsePayload, ResponseStatus } from 'ui-common' +import { extractErrorMessage } from '../utils/errors.js' + export const outputJson = (payload: ResponsePayload): void => { process.stdout.write(JSON.stringify(payload, null, 2) + '\n') } export const outputJsonError = (error: unknown): void => { - const message = error instanceof Error ? error.message : String(error) + const message = extractErrorMessage(error) process.stdout.write( JSON.stringify({ error: true, message, status: ResponseStatus.FAILURE }, null, 2) + '\n' ) diff --git a/ui/cli/src/utils/errors.ts b/ui/cli/src/utils/errors.ts new file mode 100644 index 00000000..d3e998cd --- /dev/null +++ b/ui/cli/src/utils/errors.ts @@ -0,0 +1,2 @@ +export const extractErrorMessage = (error: unknown): string => + error instanceof Error ? error.message : String(error)