dotenv-diff 2.2.6 → 2.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/README.md +11 -0
  2. package/dist/src/cli/run.d.ts.map +1 -1
  3. package/dist/src/cli/run.js +133 -102
  4. package/dist/src/cli/run.js.map +1 -1
  5. package/dist/src/commands/compare.d.ts +2 -20
  6. package/dist/src/commands/compare.d.ts.map +1 -1
  7. package/dist/src/commands/compare.js +107 -173
  8. package/dist/src/commands/compare.js.map +1 -1
  9. package/dist/src/commands/scanUsage.d.ts.map +1 -1
  10. package/dist/src/commands/scanUsage.js +61 -182
  11. package/dist/src/commands/scanUsage.js.map +1 -1
  12. package/dist/src/config/loadConfig.d.ts +2 -0
  13. package/dist/src/config/loadConfig.d.ts.map +1 -0
  14. package/dist/src/config/options.d.ts.map +1 -1
  15. package/dist/src/config/options.js +42 -32
  16. package/dist/src/config/options.js.map +1 -1
  17. package/dist/src/config/types.d.ts +58 -0
  18. package/dist/src/config/types.d.ts.map +1 -1
  19. package/dist/src/core/fixEnv.d.ts +23 -15
  20. package/dist/src/core/fixEnv.d.ts.map +1 -1
  21. package/dist/src/core/fixEnv.js +70 -11
  22. package/dist/src/core/fixEnv.js.map +1 -1
  23. package/dist/src/core/helpers/isAllOk.d.ts +8 -0
  24. package/dist/src/core/helpers/isAllOk.d.ts.map +1 -0
  25. package/dist/src/core/helpers/isAllOk.js +15 -0
  26. package/dist/src/core/helpers/isAllOk.js.map +1 -0
  27. package/dist/src/core/helpers/updateTotals.d.ts +20 -0
  28. package/dist/src/core/helpers/updateTotals.d.ts.map +1 -0
  29. package/dist/src/core/helpers/updateTotals.js +37 -0
  30. package/dist/src/core/helpers/updateTotals.js.map +1 -0
  31. package/dist/src/core/processComparisonFile.d.ts +36 -0
  32. package/dist/src/core/processComparisonFile.d.ts.map +1 -0
  33. package/dist/src/core/processComparisonFile.js +124 -0
  34. package/dist/src/core/processComparisonFile.js.map +1 -0
  35. package/dist/src/core/secretDetectors.d.ts.map +1 -1
  36. package/dist/src/core/secretDetectors.js +13 -0
  37. package/dist/src/core/secretDetectors.js.map +1 -1
  38. package/dist/src/services/ensureFilesOrPrompt.d.ts +19 -0
  39. package/dist/src/services/ensureFilesOrPrompt.d.ts.map +1 -0
  40. package/dist/src/services/ensureFilesOrPrompt.js +73 -0
  41. package/dist/src/services/ensureFilesOrPrompt.js.map +1 -0
  42. package/dist/src/services/git.d.ts +9 -0
  43. package/dist/src/services/git.d.ts.map +1 -1
  44. package/dist/src/services/git.js +46 -3
  45. package/dist/src/services/git.js.map +1 -1
  46. package/dist/src/services/scanOutputToConsole.d.ts +6 -1
  47. package/dist/src/services/scanOutputToConsole.d.ts.map +1 -1
  48. package/dist/src/services/scanOutputToConsole.js +71 -112
  49. package/dist/src/services/scanOutputToConsole.js.map +1 -1
  50. package/dist/src/ui/compare/printAutoFix.d.ts +16 -0
  51. package/dist/src/ui/compare/printAutoFix.d.ts.map +1 -0
  52. package/dist/src/ui/compare/printAutoFix.js +34 -0
  53. package/dist/src/ui/compare/printAutoFix.js.map +1 -0
  54. package/dist/src/ui/compare/printAutoFixApplied.d.ts +7 -0
  55. package/dist/src/ui/compare/printAutoFixApplied.d.ts.map +1 -0
  56. package/dist/src/ui/compare/printAutoFixApplied.js +22 -0
  57. package/dist/src/ui/compare/printAutoFixApplied.js.map +1 -0
  58. package/dist/src/ui/compare/printDuplicates.d.ts +17 -0
  59. package/dist/src/ui/compare/printDuplicates.d.ts.map +1 -0
  60. package/dist/src/ui/compare/printDuplicates.js +25 -0
  61. package/dist/src/ui/compare/printDuplicates.js.map +1 -0
  62. package/dist/src/ui/compare/printErrorNotFound.d.ts +9 -0
  63. package/dist/src/ui/compare/printErrorNotFound.d.ts.map +1 -0
  64. package/dist/src/ui/compare/printErrorNotFound.js +18 -0
  65. package/dist/src/ui/compare/printErrorNotFound.js.map +1 -0
  66. package/dist/src/ui/compare/printFixTips.d.ts +11 -0
  67. package/dist/src/ui/compare/printFixTips.d.ts.map +1 -0
  68. package/dist/src/ui/compare/printFixTips.js +46 -0
  69. package/dist/src/ui/compare/printFixTips.js.map +1 -0
  70. package/dist/src/ui/compare/printHeader.d.ts +10 -0
  71. package/dist/src/ui/compare/printHeader.d.ts.map +1 -0
  72. package/dist/src/ui/compare/printHeader.js +20 -0
  73. package/dist/src/ui/compare/printHeader.js.map +1 -0
  74. package/dist/src/ui/compare/printIssues.d.ts +9 -0
  75. package/dist/src/ui/compare/printIssues.d.ts.map +1 -0
  76. package/dist/src/ui/compare/printIssues.js +34 -0
  77. package/dist/src/ui/compare/printIssues.js.map +1 -0
  78. package/dist/src/ui/compare/printPrompt.d.ts +11 -0
  79. package/dist/src/ui/compare/printPrompt.d.ts.map +1 -0
  80. package/dist/src/ui/compare/printPrompt.js +24 -0
  81. package/dist/src/ui/compare/printPrompt.js.map +1 -0
  82. package/dist/src/ui/compare/printStats.d.ts +19 -0
  83. package/dist/src/ui/compare/printStats.d.ts.map +1 -0
  84. package/dist/src/ui/compare/printStats.js +30 -0
  85. package/dist/src/ui/compare/printStats.js.map +1 -0
  86. package/dist/src/ui/compare/printSuccess.d.ts +11 -0
  87. package/dist/src/ui/compare/printSuccess.d.ts.map +1 -0
  88. package/dist/src/ui/compare/printSuccess.js +27 -0
  89. package/dist/src/ui/compare/printSuccess.js.map +1 -0
  90. package/dist/src/ui/scan/printComparisonError.d.ts +11 -0
  91. package/dist/src/ui/scan/printComparisonError.d.ts.map +1 -0
  92. package/dist/src/ui/scan/printComparisonError.js +20 -0
  93. package/dist/src/ui/scan/printComparisonError.js.map +1 -0
  94. package/dist/src/ui/scan/printHeader.d.ts +7 -0
  95. package/dist/src/ui/scan/printHeader.d.ts.map +1 -0
  96. package/dist/src/ui/scan/printHeader.js +16 -0
  97. package/dist/src/ui/scan/printHeader.js.map +1 -0
  98. package/dist/src/ui/scan/printMissing.d.ts +13 -0
  99. package/dist/src/ui/scan/printMissing.d.ts.map +1 -0
  100. package/dist/src/ui/scan/printMissing.js +43 -0
  101. package/dist/src/ui/scan/printMissing.js.map +1 -0
  102. package/dist/src/ui/scan/printMissingExample.d.ts +9 -0
  103. package/dist/src/ui/scan/printMissingExample.d.ts.map +1 -0
  104. package/dist/src/ui/scan/printMissingExample.js +27 -0
  105. package/dist/src/ui/scan/printMissingExample.js.map +1 -0
  106. package/dist/src/ui/scan/printSecrets.d.ts +14 -0
  107. package/dist/src/ui/scan/printSecrets.d.ts.map +1 -0
  108. package/dist/src/ui/scan/printSecrets.js +29 -0
  109. package/dist/src/ui/scan/printSecrets.js.map +1 -0
  110. package/dist/src/ui/scan/printStats.d.ts +13 -0
  111. package/dist/src/ui/scan/printStats.d.ts.map +1 -0
  112. package/dist/src/ui/scan/printStats.js +17 -0
  113. package/dist/src/ui/scan/printStats.js.map +1 -0
  114. package/dist/src/ui/scan/printUniqueVariables.d.ts +7 -0
  115. package/dist/src/ui/scan/printUniqueVariables.d.ts.map +1 -0
  116. package/dist/src/ui/scan/printUniqueVariables.js +14 -0
  117. package/dist/src/ui/scan/printUniqueVariables.js.map +1 -0
  118. package/dist/src/ui/scan/printUnused.d.ts +10 -0
  119. package/dist/src/ui/scan/printUnused.d.ts.map +1 -0
  120. package/dist/src/ui/scan/printUnused.js +22 -0
  121. package/dist/src/ui/scan/printUnused.js.map +1 -0
  122. package/dist/src/ui/scan/printVariables.d.ts +10 -0
  123. package/dist/src/ui/scan/printVariables.d.ts.map +1 -0
  124. package/dist/src/ui/scan/printVariables.js +37 -0
  125. package/dist/src/ui/scan/printVariables.js.map +1 -0
  126. package/dist/src/ui/shared/printAutoFix.d.ts +16 -0
  127. package/dist/src/ui/shared/printAutoFix.d.ts.map +1 -0
  128. package/dist/src/ui/shared/printAutoFix.js +34 -0
  129. package/dist/src/ui/shared/printAutoFix.js.map +1 -0
  130. package/dist/src/ui/shared/printDuplicates.d.ts +17 -0
  131. package/dist/src/ui/shared/printDuplicates.d.ts.map +1 -0
  132. package/dist/src/ui/shared/printDuplicates.js +25 -0
  133. package/dist/src/ui/shared/printDuplicates.js.map +1 -0
  134. package/dist/src/ui/shared/printFixTips.d.ts +11 -0
  135. package/dist/src/ui/shared/printFixTips.d.ts.map +1 -0
  136. package/dist/src/ui/shared/printFixTips.js +46 -0
  137. package/dist/src/ui/shared/printFixTips.js.map +1 -0
  138. package/dist/src/ui/shared/printGitignore.d.ts +13 -0
  139. package/dist/src/ui/shared/printGitignore.d.ts.map +1 -0
  140. package/dist/src/ui/shared/printGitignore.js +22 -0
  141. package/dist/src/ui/shared/printGitignore.js.map +1 -0
  142. package/dist/src/ui/shared/printOptionErrors.d.ts +17 -0
  143. package/dist/src/ui/shared/printOptionErrors.d.ts.map +1 -0
  144. package/dist/src/ui/shared/printOptionErrors.js +27 -0
  145. package/dist/src/ui/shared/printOptionErrors.js.map +1 -0
  146. package/dist/src/ui/shared/printStrictModeError.d.ts +16 -0
  147. package/dist/src/ui/shared/printStrictModeError.d.ts.map +1 -0
  148. package/dist/src/ui/shared/printStrictModeError.js +29 -0
  149. package/dist/src/ui/shared/printStrictModeError.js.map +1 -0
  150. package/dist/src/ui/shared/printSuccess.d.ts +11 -0
  151. package/dist/src/ui/shared/printSuccess.d.ts.map +1 -0
  152. package/dist/src/ui/shared/printSuccess.js +27 -0
  153. package/dist/src/ui/shared/printSuccess.js.map +1 -0
  154. package/dist/src/ui/shared/setupGlobalConfig.d.ts +7 -0
  155. package/dist/src/ui/shared/setupGlobalConfig.d.ts.map +1 -0
  156. package/dist/src/ui/shared/setupGlobalConfig.js +12 -0
  157. package/dist/src/ui/shared/setupGlobalConfig.js.map +1 -0
  158. package/package.json +3 -3
@@ -1,16 +1,37 @@
1
- import chalk from 'chalk';
2
- import fs from 'fs';
3
- import path from 'path';
4
- import { parseEnvFile } from '../core/parseEnv.js';
5
1
  import { scanCodebase } from '../services/codeBaseScanner.js';
6
- import { filterIgnoredKeys } from '../core/filterIgnoredKeys.js';
7
- import { resolveFromCwd } from '../core/helpers/resolveFromCwd.js';
8
2
  import { determineComparisonFile } from '../core/determineComparisonFile.js';
9
3
  import { outputToConsole } from '../services/scanOutputToConsole.js';
10
4
  import { createJsonOutput } from '../core/scanJsonOutput.js';
11
- import { findDuplicateKeys } from '../services/duplicates.js';
12
- import { compareWithEnvFiles } from '../core/compareScan.js';
13
- import { applyFixes } from '../core/fixEnv.js';
5
+ import { printMissingExample } from '../ui/scan/printMissingExample.js';
6
+ import { processComparisonFile } from '../core/processComparisonFile.js';
7
+ import { printComparisonError } from '../ui/scan/printComparisonError.js';
8
+ /**
9
+ * Filters out commented usages from the list.
10
+ * Skipping comments:
11
+ * // process.env.API_URL
12
+ * # process.env.API_URL
13
+ * /* process.env.API_URL
14
+ * * process.env.API_URL
15
+ * @param usages - List of environment variable usages
16
+ * @returns Filtered list of environment variable usages
17
+ */
18
+ function skipCommentedUsages(usages) {
19
+ return usages.filter((u) => u.context && !/^\s*(\/\/|#|\/\*|\*)/.test(u.context.trim()));
20
+ }
21
+ /**
22
+ * Recalculates statistics for a scan result after filtering usages.
23
+ * @param scanResult The current scan result
24
+ * @returns Updated scanResult with recalculated stats
25
+ */
26
+ function calculateStats(scanResult) {
27
+ const uniqueVariables = new Set(scanResult.used.map((u) => u.variable)).size;
28
+ scanResult.stats = {
29
+ filesScanned: scanResult.stats.filesScanned,
30
+ totalUsages: scanResult.used.length,
31
+ uniqueVariables,
32
+ };
33
+ return scanResult;
34
+ }
14
35
  /**
15
36
  * Scans codebase for environment variable usage and compares with .env file
16
37
  * @param {ScanUsageOptions} opts - Scan configuration options
@@ -24,150 +45,47 @@ import { applyFixes } from '../core/fixEnv.js';
24
45
  * @returns {Promise<{exitWithError: boolean}>} Returns true if missing variables found
25
46
  */
26
47
  export async function scanUsage(opts) {
27
- if (!opts.json) {
28
- console.log();
29
- console.log(chalk.blue('🔍 Scanning codebase for environment variable usage...'));
30
- console.log();
31
- }
32
48
  // Scan the codebase
33
49
  let scanResult = await scanCodebase(opts);
34
- scanResult.used = scanResult.used.filter((u) => u.context && !/^\s*(\/\/|#)/.test(u.context.trim()));
35
- // Recalculate stats after filtering out commented usages
36
- const uniqueVariables = new Set(scanResult.used.map((u) => u.variable)).size;
37
- scanResult.stats = {
38
- filesScanned: scanResult.stats.filesScanned, // Keep original files scanned count
39
- totalUsages: scanResult.used.length,
40
- uniqueVariables: uniqueVariables,
41
- };
42
- // If user explicitly passed --example but the file doesn't exist:
43
- if (opts.examplePath) {
44
- const exampleAbs = resolveFromCwd(opts.cwd, opts.examplePath);
45
- const missing = !fs.existsSync(exampleAbs);
46
- if (missing) {
47
- const msg = `❌ Missing specified example file: ${opts.examplePath}`;
48
- if (opts.isCiMode) {
49
- // IMPORTANT: stdout (console.log), not stderr, to satisfy the test
50
- console.log(chalk.red(msg));
51
- return { exitWithError: true };
52
- }
53
- else if (!opts.json) {
54
- console.log(chalk.yellow(msg.replace('❌', '⚠️')));
55
- }
56
- // Non-CI: continue without comparison
57
- }
50
+ // Filter out commented usages
51
+ scanResult.used = skipCommentedUsages(scanResult.used);
52
+ // Recalculate stats after filtering
53
+ calculateStats(scanResult);
54
+ // If user explicitly passed --example flag, but the file doesn't exist:
55
+ if (printMissingExample(opts)) {
56
+ return { exitWithError: true };
58
57
  }
59
58
  // Determine which file to compare against
60
59
  const compareFile = determineComparisonFile(opts);
61
60
  let envVariables = {};
62
61
  let comparedAgainst = '';
63
62
  let duplicatesFound = false;
64
- let dupsEnv = [];
65
- let dupsExample = [];
66
63
  // Store fix information for consolidated display
67
64
  let fixApplied = false;
68
65
  let fixedKeys = [];
69
66
  let removedDuplicates = [];
67
+ let gitignoreUpdated = false;
68
+ // If comparing against a file, process it
69
+ // fx: if the scan is comparing against .env.example, it will check for missing keys there
70
70
  if (compareFile) {
71
- try {
72
- const envFull = parseEnvFile(compareFile.path);
73
- const envKeys = filterIgnoredKeys(Object.keys(envFull), opts.ignore, opts.ignoreRegex);
74
- envVariables = Object.fromEntries(envKeys.map((k) => [k, envFull[k]]));
75
- scanResult = compareWithEnvFiles(scanResult, envVariables);
76
- comparedAgainst = compareFile.name;
77
- // Check for duplicates in the env file
78
- if (!opts.allowDuplicates) {
79
- dupsEnv = findDuplicateKeys(compareFile.path).filter(({ key }) => !opts.ignore.includes(key) &&
80
- !opts.ignoreRegex.some((rx) => rx.test(key)));
81
- // Also check for duplicates in example file if it exists AND is different from compareFile
82
- if (opts.examplePath) {
83
- const examplePath = resolveFromCwd(opts.cwd, opts.examplePath);
84
- // Only check example file if it exists and is NOT the same as the comparison file
85
- if (fs.existsSync(examplePath) && examplePath !== compareFile.path) {
86
- dupsExample = findDuplicateKeys(examplePath).filter(({ key }) => !opts.ignore.includes(key) &&
87
- !opts.ignoreRegex.some((rx) => rx.test(key)));
88
- }
89
- }
90
- duplicatesFound = dupsEnv.length > 0 || dupsExample.length > 0;
91
- // Apply duplicate fixes if --fix is enabled (but don't show message yet)
92
- if (opts.fix && (dupsEnv.length > 0 || dupsExample.length > 0)) {
93
- const { changed, result } = applyFixes({
94
- envPath: compareFile.path,
95
- examplePath: opts.examplePath
96
- ? resolveFromCwd(opts.cwd, opts.examplePath)
97
- : '',
98
- missingKeys: [],
99
- duplicateKeys: dupsEnv.map((d) => d.key),
100
- });
101
- if (changed) {
102
- fixApplied = true;
103
- removedDuplicates = result.removedDuplicates;
104
- // Clear duplicates after fix
105
- duplicatesFound = false;
106
- dupsEnv = [];
107
- dupsExample = [];
108
- }
109
- }
110
- // Add to scan result for both JSON and console output (only if not fixed)
111
- if ((dupsEnv.length > 0 || dupsExample.length > 0) &&
112
- (!opts.fix || !fixApplied)) {
113
- if (!scanResult.duplicates)
114
- scanResult.duplicates = {};
115
- if (dupsEnv.length > 0)
116
- scanResult.duplicates.env = dupsEnv;
117
- if (dupsExample.length > 0)
118
- scanResult.duplicates.example = dupsExample;
119
- }
120
- }
121
- }
122
- catch (error) {
123
- const errorMessage = `⚠️ Could not read ${compareFile.name}: ${compareFile.path} - ${error}`;
124
- if (opts.isCiMode) {
125
- // In CI mode, exit with error if file doesn't exist
126
- console.log(chalk.red(`❌ ${errorMessage}`));
71
+ const result = processComparisonFile(scanResult, compareFile, opts);
72
+ if (result.error) {
73
+ const { exit } = printComparisonError(result.error.message, result.error.shouldExit, opts.json ?? false);
74
+ if (exit)
127
75
  return { exitWithError: true };
128
- }
129
- if (!opts.json) {
130
- console.log(chalk.yellow(errorMessage));
131
- }
132
76
  }
133
- }
134
- // Apply missing keys fix if --fix is enabled (but don't show message yet)
135
- if (opts.fix && compareFile) {
136
- const missingKeys = scanResult.missing;
137
- if (missingKeys.length > 0) {
138
- const envFilePath = compareFile.path;
139
- const exampleFilePath = opts.examplePath
140
- ? resolveFromCwd(opts.cwd, opts.examplePath)
141
- : null;
142
- // Append missing keys to .env
143
- const content = fs.readFileSync(envFilePath, 'utf-8');
144
- const newContent = content +
145
- (content.endsWith('\n') ? '' : '\n') +
146
- missingKeys.map((k) => `${k}=`).join('\n') +
147
- '\n';
148
- fs.writeFileSync(envFilePath, newContent);
149
- // Append to .env.example if it exists
150
- if (exampleFilePath && fs.existsSync(exampleFilePath)) {
151
- const exContent = fs.readFileSync(exampleFilePath, 'utf-8');
152
- const existingExKeys = new Set(exContent
153
- .split('\n')
154
- .map((l) => l.trim().split('=')[0])
155
- .filter(Boolean));
156
- const newKeys = missingKeys.filter((k) => !existingExKeys.has(k));
157
- if (newKeys.length) {
158
- const newExContent = exContent +
159
- (exContent.endsWith('\n') ? '' : '\n') +
160
- newKeys.join('\n') +
161
- '\n';
162
- fs.writeFileSync(exampleFilePath, newExContent);
163
- }
164
- }
165
- fixApplied = true;
166
- fixedKeys = missingKeys;
167
- scanResult.missing = [];
77
+ else {
78
+ scanResult = result.scanResult;
79
+ envVariables = result.envVariables;
80
+ comparedAgainst = result.comparedAgainst;
81
+ duplicatesFound = result.duplicatesFound;
82
+ fixApplied = result.fixApplied;
83
+ removedDuplicates = result.removedDuplicates;
84
+ fixedKeys = result.addedEnv;
85
+ gitignoreUpdated = result.gitignoreUpdated;
168
86
  }
169
87
  }
170
- // Prepare JSON output
88
+ // JSON output
171
89
  if (opts.json) {
172
90
  const jsonOutput = createJsonOutput(scanResult, opts, comparedAgainst, Object.keys(envVariables).length);
173
91
  console.log(JSON.stringify(jsonOutput, null, 2));
@@ -182,51 +100,12 @@ export async function scanUsage(opts) {
182
100
  };
183
101
  }
184
102
  // Console output
185
- const result = outputToConsole(scanResult, opts, comparedAgainst);
186
- // Show consolidated fix message at the bottom (after all other output)
187
- if (opts.fix && !opts.json) {
188
- if (fixApplied) {
189
- console.log(chalk.green('✅ Auto-fix applied:'));
190
- // Show removed duplicates
191
- if (removedDuplicates.length > 0) {
192
- console.log(chalk.green(` - Removed ${removedDuplicates.length} duplicate keys from ${comparedAgainst}: ${removedDuplicates.join(', ')}`));
193
- }
194
- // Show added missing keys
195
- if (fixedKeys.length > 0) {
196
- console.log(chalk.green(` - Added ${fixedKeys.length} missing keys to ${comparedAgainst}: ${fixedKeys.join(', ')}`));
197
- if (opts.examplePath) {
198
- console.log(chalk.green(` - Synced ${fixedKeys.length} keys to ${path.basename(opts.examplePath)}`));
199
- }
200
- }
201
- console.log();
202
- }
203
- else {
204
- console.log(chalk.green('✅ Auto-fix applied: no changes needed.'));
205
- console.log();
206
- }
207
- }
208
- if (!opts.json && !opts.fix) {
209
- if (scanResult.missing.length > 0 && duplicatesFound) {
210
- console.log(chalk.gray('💡 Tip: Run with `--fix` to add missing keys and remove duplicates'));
211
- console.log();
212
- }
213
- else if (scanResult.missing.length > 0) {
214
- console.log(chalk.gray('💡 Tip: Run with `--fix` to add missing keys'));
215
- console.log();
216
- }
217
- else if (duplicatesFound) {
218
- console.log(chalk.gray('💡 Tip: Run with `--fix` to remove duplicate keys'));
219
- console.log();
220
- }
221
- }
222
- return {
223
- exitWithError: result.exitWithError ||
224
- duplicatesFound ||
225
- !!(opts.strict &&
226
- (scanResult.unused.length > 0 ||
227
- (scanResult.duplicates?.env?.length ?? 0) > 0 ||
228
- (scanResult.duplicates?.example?.length ?? 0) > 0 ||
229
- (scanResult.secrets?.length ?? 0) > 0)),
230
- };
103
+ const result = outputToConsole(scanResult, opts, comparedAgainst, {
104
+ fixApplied,
105
+ removedDuplicates,
106
+ addedEnv: fixedKeys,
107
+ gitignoreUpdated,
108
+ });
109
+ return { exitWithError: result.exitWithError || duplicatesFound };
231
110
  }
232
111
  //# sourceMappingURL=scanUsage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanUsage.js","sourceRoot":"","sources":["../../../src/commands/scanUsage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanUsage.js","sourceRoot":"","sources":["../../../src/commands/scanUsage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function loadConfig(cwd?: string): any;
2
+ //# sourceMappingURL=loadConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadConfig.d.ts","sourceRoot":"","sources":["../../../src/config/loadConfig.ts"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,GAAG,CAK3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/config/options.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,UAAU,EAChB,MAAM,YAAY,CAAC;AAmCpB;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAwEzD"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/config/options.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,UAAU,EAChB,MAAM,YAAY,CAAC;AA4DpB;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CA2DzD"}
@@ -1,6 +1,6 @@
1
- import chalk from 'chalk';
2
1
  import path from 'path';
3
2
  import { ALLOWED_CATEGORIES, } from './types.js';
3
+ import { printInvalidCategory, printInvalidRegex, printCiYesWarning, } from '../ui/shared/printOptionErrors.js';
4
4
  /**
5
5
  * Parses a comma-separated list of strings into an array of strings.
6
6
  * @param val - The input value, which can be a string, an array of strings, or undefined.
@@ -19,58 +19,68 @@ function parseList(val) {
19
19
  * @param flagName - The name of the flag being parsed (for error messages).
20
20
  * @returns An array of categories.
21
21
  */
22
- function parseCategories(val, flagName = '') {
22
+ function parseCategories(val, flagName = '--only') {
23
23
  const raw = parseList(val);
24
24
  const bad = raw.filter((c) => !ALLOWED_CATEGORIES.includes(c));
25
25
  if (bad.length) {
26
- console.error(chalk.red(`❌ Error: invalid ${flagName} value(s): ${bad.join(', ')}. Allowed: ${ALLOWED_CATEGORIES.join(', ')}`));
27
- process.exit(1);
26
+ printInvalidCategory(flagName, bad, ALLOWED_CATEGORIES);
28
27
  }
29
28
  return raw;
30
29
  }
30
+ /**
31
+ * Parses regex patterns safely, exiting on invalid syntax.
32
+ */
33
+ function parseRegexList(val) {
34
+ const regexList = [];
35
+ for (const pattern of parseList(val)) {
36
+ try {
37
+ regexList.push(new RegExp(pattern));
38
+ }
39
+ catch {
40
+ printInvalidRegex(pattern);
41
+ }
42
+ }
43
+ return regexList;
44
+ }
45
+ /**
46
+ * Converts flag value to boolean.
47
+ */
48
+ function toBool(value) {
49
+ return value === true || value === 'true';
50
+ }
31
51
  /**
32
52
  * Normalizes the raw options by providing default values and parsing specific fields.
33
53
  * @param raw - The raw options to normalize.
34
54
  * @returns The normalized options.
35
55
  */
36
56
  export function normalizeOptions(raw) {
37
- const checkValues = raw.checkValues ?? false;
38
- const isCiMode = Boolean(raw.ci);
39
- const isYesMode = Boolean(raw.yes);
40
- const allowDuplicates = Boolean(raw.allowDuplicates);
41
- const fix = Boolean(raw.fix);
42
- const json = Boolean(raw.json);
43
- const onlyParsed = parseCategories(raw.only, '--only');
44
- const only = onlyParsed.length ? onlyParsed : [];
45
- const noColor = Boolean(raw.noColor);
46
- const compare = Boolean(raw.compare);
57
+ const checkValues = toBool(raw.checkValues);
58
+ const isCiMode = toBool(raw.ci);
59
+ const isYesMode = toBool(raw.yes);
60
+ const allowDuplicates = toBool(raw.allowDuplicates);
61
+ const fix = toBool(raw.fix);
62
+ const json = toBool(raw.json);
63
+ const noColor = toBool(raw.noColor);
64
+ const compare = toBool(raw.compare);
65
+ const strict = toBool(raw.strict);
47
66
  const scanUsage = raw.scanUsage ?? !compare;
67
+ const showUnused = raw.showUnused !== false;
68
+ const showStats = raw.showStats !== false;
69
+ const secrets = raw.secrets !== false;
70
+ const only = parseCategories(raw.only);
71
+ const ignore = parseList(raw.ignore);
72
+ const ignoreRegex = parseRegexList(raw.ignoreRegex);
48
73
  const includeFiles = parseList(raw.includeFiles);
49
74
  const excludeFiles = parseList(raw.excludeFiles);
50
- const showUnused = raw.showUnused === false ? false : true;
51
- const showStats = raw.showStats === false ? false : true;
52
75
  const files = parseList(raw.files);
53
- const secrets = raw.secrets === false ? false : true;
54
- const strict = Boolean(raw.strict);
55
- const ignore = parseList(raw.ignore);
56
- const ignoreRegex = [];
57
- for (const pattern of parseList(raw.ignoreRegex)) {
58
- try {
59
- ignoreRegex.push(new RegExp(pattern));
60
- }
61
- catch {
62
- console.error(chalk.red(`❌ Error: invalid --ignore-regex pattern: ${pattern}`));
63
- process.exit(1);
64
- }
65
- }
66
- if (isCiMode && isYesMode) {
67
- console.log(chalk.yellow('⚠️ Both --ci and --yes provided; proceeding with --yes.'));
68
- }
69
76
  const cwd = process.cwd();
70
77
  const envFlag = typeof raw.env === 'string' ? path.resolve(cwd, raw.env) : undefined;
71
78
  const exampleFlag = typeof raw.example === 'string'
72
79
  ? path.resolve(cwd, raw.example)
73
80
  : undefined;
81
+ if (isCiMode && isYesMode) {
82
+ printCiYesWarning();
83
+ }
74
84
  return {
75
85
  checkValues,
76
86
  isCiMode,
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/config/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/config/options.ts"],"names":[],"mappings":"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"}
@@ -183,4 +183,62 @@ export interface ScanJsonEntry {
183
183
  export interface VariableUsages {
184
184
  [variable: string]: EnvUsage[];
185
185
  }
186
+ export interface ComparisonOptions {
187
+ checkValues: boolean;
188
+ cwd: string;
189
+ allowDuplicates?: boolean;
190
+ fix?: boolean;
191
+ json?: boolean;
192
+ ignore: string[];
193
+ ignoreRegex: RegExp[];
194
+ collect?: (entry: CompareJsonEntry) => void;
195
+ only?: Category[];
196
+ showStats?: boolean;
197
+ strict?: boolean;
198
+ }
199
+ export interface FilePair {
200
+ envName: string;
201
+ envPath: string;
202
+ examplePath: string;
203
+ }
204
+ export interface ComparisonResult {
205
+ exitWithError: boolean;
206
+ }
207
+ export type PairContext = {
208
+ envName: string;
209
+ envPath: string;
210
+ exampleName: string;
211
+ examplePath: string;
212
+ exists: {
213
+ env: boolean;
214
+ example: boolean;
215
+ };
216
+ currentFull?: Record<string, string>;
217
+ exampleFull?: Record<string, string>;
218
+ currentKeys?: string[];
219
+ exampleKeys?: string[];
220
+ current?: Record<string, string>;
221
+ example?: Record<string, string>;
222
+ };
223
+ export type Filtered = {
224
+ missing: string[];
225
+ extra?: string[];
226
+ empty?: string[];
227
+ mismatches?: Array<{
228
+ key: string;
229
+ expected: string;
230
+ actual: string;
231
+ }>;
232
+ duplicatesEnv: Array<{
233
+ key: string;
234
+ count: number;
235
+ }>;
236
+ duplicatesEx: Array<{
237
+ key: string;
238
+ count: number;
239
+ }>;
240
+ gitignoreIssue: {
241
+ reason: 'no-gitignore' | 'not-ignored';
242
+ } | null;
243
+ };
186
244
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,30 @@
1
- /**
2
- * Applies fixes to the .env and .env.example files based on the detected issues.
3
- * @param envPath - The path to the .env file.
4
- * @param examplePath - The path to the .env.example file.
5
- * @param missingKeys - The list of missing keys to add.
6
- * @param duplicateKeys - The list of duplicate keys to remove.
7
- * @returns An object indicating whether changes were made and details of the changes.
8
- */
9
- export declare function applyFixes({ envPath, examplePath, missingKeys, duplicateKeys, }: {
1
+ export type ApplyFixesOptions = {
10
2
  envPath: string;
11
3
  examplePath: string;
12
4
  missingKeys: string[];
13
5
  duplicateKeys: string[];
14
- }): {
6
+ ensureGitignore?: boolean;
7
+ };
8
+ export type FixResult = {
9
+ removedDuplicates: string[];
10
+ addedEnv: string[];
11
+ addedExample: string[];
12
+ gitignoreUpdated: boolean;
13
+ };
14
+ /**
15
+ * Applies fixes to the .env and .env.example files based on the detected issues.
16
+ *
17
+ * This function will:
18
+ * - Remove duplicate keys from .env (keeping the last occurrence)
19
+ * - Add missing keys to .env with empty values
20
+ * - Add missing keys to .env.example (if not already present)
21
+ * - Ensure .env is ignored in .gitignore (if in a git repo and ensureGitignore is true)
22
+ *
23
+ * @param options - Fix options including file paths and keys to fix
24
+ * @returns An object indicating whether changes were made and details of the changes
25
+ */
26
+ export declare function applyFixes(options: ApplyFixesOptions): {
15
27
  changed: boolean;
16
- result: {
17
- removedDuplicates: string[];
18
- addedEnv: string[];
19
- addedExample: string[];
20
- };
28
+ result: FixResult;
21
29
  };
22
30
  //# sourceMappingURL=fixEnv.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fixEnv.d.ts","sourceRoot":"","sources":["../../../src/core/fixEnv.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,WAAW,EACX,WAAW,EACX,aAAa,GACd,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;;;2BAE4B,MAAM,EAAE;kBACjB,MAAM,EAAE;sBACJ,MAAM,EAAE;;EAgE/B"}
1
+ {"version":3,"file":"fixEnv.d.ts","sourceRoot":"","sources":["../../../src/core/fixEnv.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;CACnB,CAmFA"}