From ab01a19a03b7552fdcc1d72eef010c4412d64704 Mon Sep 17 00:00:00 2001 From: Chrilleweb Date: Sun, 1 Mar 2026 12:23:46 +0100 Subject: [PATCH 1/2] fix: better output design --- src/ui/scan/printMissing.ts | 16 ++++++++++++---- test/unit/ui/scan/printMissing.test.ts | 10 +++++----- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/ui/scan/printMissing.ts b/src/ui/scan/printMissing.ts index eaadeff6..59ae0a7a 100644 --- a/src/ui/scan/printMissing.ts +++ b/src/ui/scan/printMissing.ts @@ -18,7 +18,10 @@ export function printMissing( if (missing.length === 0) return false; const fileType = comparedAgainst || 'environment file'; - console.log(chalk.red(`❌ Missing in ${fileType}:`)); + const label = chalk.bgRed.white.bold(' ERROR '); + console.log( + `${label} ${chalk.red(`Missing in ${fileType} (defined in code):`)}`, + ); // Group by variable → find their usages const grouped = missing.reduce((acc: VariableUsages, variable: string) => { @@ -43,11 +46,16 @@ export function printMissing( // Print grouped by file for (const [file, items] of byFile) { - console.log(chalk.bold(` ${file}`)); + console.log(); + console.log(chalk.bold(`${file}`)); for (const { variable, usage } of items) { - console.log(chalk.red(` ${variable}: Line ${usage.line}`)); - console.log(chalk.red.dim(` ${usage.context.trim()}`)); + const line = usage.line ?? 0; + const column = (usage as any).column ?? 0; + + const position = column > 0 ? `${line}:${column}` : `${line}`; + + console.log(`${chalk.gray(position)} ${chalk.red(variable)}`); } } console.log(); diff --git a/test/unit/ui/scan/printMissing.test.ts b/test/unit/ui/scan/printMissing.test.ts index d9ddb1b5..57bfaae1 100644 --- a/test/unit/ui/scan/printMissing.test.ts +++ b/test/unit/ui/scan/printMissing.test.ts @@ -58,7 +58,7 @@ describe('printMissing', () => { expect(result).toBe(true); expect(logSpy).toHaveBeenCalledWith( - chalk.red('❌ Missing in .env.example:'), + chalk.red(' ERROR Missing in .env.example (defined in code):'), ); expect( @@ -75,13 +75,13 @@ describe('printMissing', () => { expect( logSpy.mock.calls.some((call: [string]) => - String(call[0]).includes('API_KEY: Line 10'), + String(call[0]).includes('10:1 API_KEY'), ), ).toBe(true); expect( logSpy.mock.calls.some((call: [string]) => - String(call[0]).includes('SECRET: Line 20'), + String(call[0]).includes('20:1 SECRET'), ), ).toBe(true); @@ -103,7 +103,7 @@ describe('printMissing', () => { printMissing(['A'], used, ''); expect(logSpy).toHaveBeenCalledWith( - chalk.red('❌ Missing in environment file:'), + chalk.red(' ERROR Missing in environment file (defined in code):'), ); }); @@ -114,6 +114,6 @@ describe('printMissing', () => { expect(result).toBe(true); - expect(logSpy).toHaveBeenCalledWith(chalk.red('❌ Missing in .env:')); + expect(logSpy).toHaveBeenCalledWith(chalk.red(' ERROR Missing in .env (defined in code):')); }); }); From 684ef7f52d2b21bf927c375c42ee84e369ee9fd9 Mon Sep 17 00:00:00 2001 From: Chrilleweb Date: Sun, 1 Mar 2026 12:28:38 +0100 Subject: [PATCH 2/2] chore: fixed lint --- src/ui/scan/printMissing.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/scan/printMissing.ts b/src/ui/scan/printMissing.ts index 59ae0a7a..78e72149 100644 --- a/src/ui/scan/printMissing.ts +++ b/src/ui/scan/printMissing.ts @@ -51,7 +51,7 @@ export function printMissing( for (const { variable, usage } of items) { const line = usage.line ?? 0; - const column = (usage as any).column ?? 0; + const column = (usage as EnvUsage).column ?? 0; const position = column > 0 ? `${line}:${column}` : `${line}`;