Skip to content

Commit 5912958

Browse files
committed
moved print to scanconsole
1 parent c72fec9 commit 5912958

3 files changed

Lines changed: 51 additions & 43 deletions

File tree

src/commands/scanUsage.ts

Lines changed: 8 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
1-
import path from 'path';
21
import { scanCodebase } from '../services/codeBaseScanner.js';
32
import type {
43
ScanUsageOptions,
54
EnvUsage,
6-
Filtered,
75
ScanResult,
86
} from '../config/types.js';
97
import { determineComparisonFile } from '../core/determineComparisonFile.js';
108
import { outputToConsole } from '../services/scanOutputToConsole.js';
119
import { createJsonOutput } from '../core/scanJsonOutput.js';
12-
import { isEnvIgnoredByGit } from '../services/git.js';
13-
import { printFixTips } from '../ui/shared/printFixTips.js';
1410
import { printMissingExample } from '../ui/scan/printMissingExample.js';
1511
import { processComparisonFile } from '../core/processComparisonFile.js';
16-
import { printAutoFix } from '../ui/compare/printAutoFix.js';
1712
import { printComparisonError } from '../ui/scan/printComparisonError.js';
1813

1914
/**
@@ -94,6 +89,8 @@ export async function scanUsage(
9489
let removedDuplicates: string[] = [];
9590
let gitignoreUpdated = false;
9691

92+
// If comparing against a file, process it
93+
// fx: if the scan is comparing against .env.example, it will check for missing keys there
9794
if (compareFile) {
9895
const result = processComparisonFile(scanResult, compareFile, opts);
9996

@@ -141,45 +138,13 @@ export async function scanUsage(
141138
};
142139
}
143140

144-
const filtered: Filtered = {
145-
missing: scanResult.missing ?? [],
146-
duplicatesEnv: dupsEnv,
147-
duplicatesEx: dupsExample,
148-
gitignoreIssue:
149-
isEnvIgnoredByGit({ cwd: opts.cwd, envFile: '.env' }) === false ||
150-
isEnvIgnoredByGit({ cwd: opts.cwd, envFile: '.env' }) === null
151-
? { reason: 'not-ignored' }
152-
: null,
153-
};
154-
155141
// Console output
156-
const result = outputToConsole(scanResult, opts, comparedAgainst);
157-
158-
// Consolidated fix message
159-
if (opts.fix) {
160-
printAutoFix(
161-
fixApplied,
162-
{
163-
removedDuplicates,
164-
addedEnv: fixedKeys,
165-
addedExample: opts.examplePath ? fixedKeys : [],
166-
},
167-
comparedAgainst || '.env',
168-
opts.examplePath ? path.basename(opts.examplePath) : 'example file',
169-
opts.json ?? false,
170-
gitignoreUpdated,
171-
);
172-
}
173-
174-
const ignored = isEnvIgnoredByGit({ cwd: opts.cwd, envFile: '.env' });
175-
const envNotIgnored = ignored === false || ignored === null;
176-
177-
printFixTips(
178-
filtered,
179-
envNotIgnored,
180-
opts.json ?? false,
181-
opts.fix ?? false,
182-
);
142+
const result = outputToConsole(scanResult, opts, comparedAgainst, {
143+
fixApplied,
144+
removedDuplicates,
145+
addedEnv: fixedKeys,
146+
gitignoreUpdated,
147+
});
183148

184149
return { exitWithError: result.exitWithError || duplicatesFound };
185150
}

src/services/scanOutputToConsole.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import path from 'path';
12
import { checkGitignoreStatus } from './git.js';
23
import { printGitignoreWarning } from '../ui/shared/printGitignore.js';
34
import type { ScanUsageOptions, ScanResult } from '../config/types.js';
@@ -11,6 +12,9 @@ import { printDuplicates } from '../ui/shared/printDuplicates.js';
1112
import { printSecrets } from '../ui/scan/printSecrets.js';
1213
import { printSuccess } from '../ui/shared/printSuccess.js';
1314
import { printStrictModeError } from '../ui/shared/printStrictModeError.js';
15+
import type { Filtered } from '../config/types.js';
16+
import { printFixTips } from '../ui/shared/printFixTips.js';
17+
import { printAutoFix } from '../ui/compare/printAutoFix.js';
1418

1519
/**
1620
* Outputs the scan results to the console.
@@ -23,6 +27,12 @@ export function outputToConsole(
2327
scanResult: ScanResult,
2428
opts: ScanUsageOptions,
2529
comparedAgainst: string,
30+
fixContext?: {
31+
fixApplied: boolean;
32+
removedDuplicates: string[];
33+
addedEnv: string[];
34+
gitignoreUpdated: boolean;
35+
},
2636
): { exitWithError: boolean } {
2737
let exitWithError = false;
2838

@@ -122,5 +132,35 @@ export function outputToConsole(
122132
if (exit) exitWithError = true;
123133
}
124134

135+
if (opts.fix && fixContext) {
136+
printAutoFix(
137+
fixContext.fixApplied,
138+
{
139+
removedDuplicates: fixContext.removedDuplicates,
140+
addedEnv: fixContext.addedEnv,
141+
addedExample: opts.examplePath ? fixContext.addedEnv : [],
142+
},
143+
comparedAgainst || '.env',
144+
opts.examplePath ? path.basename(opts.examplePath) : 'example file',
145+
opts.json ?? false,
146+
fixContext.gitignoreUpdated,
147+
);
148+
}
149+
150+
// Filtered results for fix tips
151+
const filtered: Filtered = {
152+
missing: scanResult.missing,
153+
duplicatesEnv: scanResult.duplicates?.env ?? [],
154+
duplicatesEx: scanResult.duplicates?.example ?? [],
155+
gitignoreIssue: hasGitignoreIssue ? { reason: 'not-ignored' } : null,
156+
};
157+
158+
printFixTips(
159+
filtered,
160+
hasGitignoreIssue,
161+
opts.json ?? false,
162+
opts.fix ?? false,
163+
);
164+
125165
return { exitWithError };
126166
}

test/e2e/cli.scan-usage.e2e.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,8 @@ describe('scan-usage error handling', () => {
566566
it('will tip --fix flag if missing .env in .gitignore', () => {
567567
const cwd = tmpDir();
568568

569+
fs.mkdirSync(path.join(cwd, '.git'));
570+
fs.writeFileSync(path.join(cwd, '.gitignore'), 'node_modules\n');
569571
fs.writeFileSync(path.join(cwd, '.env'), 'API_KEY=secret\n');
570572
fs.mkdirSync(path.join(cwd, 'src'), { recursive: true });
571573
fs.writeFileSync(
@@ -574,6 +576,7 @@ describe('scan-usage error handling', () => {
574576
);
575577

576578
const res = runCli(cwd, ['--scan-usage']);
579+
console.log('stdout:', res.stdout);
577580
expect(res.status).toBe(0);
578581
expect(res.stdout).toContain('Tip: Run with `--fix` to ensure .env is added to .gitignore');
579582
});

0 commit comments

Comments
 (0)