@danielszlaski/envguard 0.1.0 ā 0.1.2
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.
- package/README.md +28 -27
- package/dist/cli.js +4 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/fix.d.ts.map +1 -1
- package/dist/commands/fix.js +17 -13
- package/dist/commands/fix.js.map +1 -1
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +56 -46
- package/dist/commands/scan.js.map +1 -1
- package/dist/utils/logger.d.ts +71 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +136 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +1 -1
- package/src/cli.ts +4 -3
- package/src/commands/fix.ts +18 -10
- package/src/commands/scan.ts +57 -43
- package/src/utils/logger.ts +146 -0
- package/test-project/src/lambda1/.env.example +2 -2
- package/test-project/src/lambda2/.env.example +6 -2
- package/test-project/src/payment/.env.example +5 -5
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# EnvGuard
|
|
1
|
+
# EnvGuard
|
|
2
2
|
|
|
3
3
|
Keep your environment variables in sync with your codebase.
|
|
4
4
|
|
|
@@ -42,31 +42,32 @@ envguard scan
|
|
|
42
42
|
Example output:
|
|
43
43
|
|
|
44
44
|
```
|
|
45
|
-
|
|
45
|
+
ā Found 1 .env file(s) and 0 serverless.yml file(s)
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
ā Found 10 variables in .env
|
|
49
|
-
ā Found 8 variables in .env.example
|
|
47
|
+
Checking ./
|
|
50
48
|
|
|
51
|
-
|
|
49
|
+
Found 12 variable(s) used in this scope
|
|
50
|
+
Found 10 variable(s) in .env
|
|
51
|
+
Found 8 variable(s) in .env.example
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
ā Missing from .env:
|
|
54
|
+
⢠STRIPE_SECRET_KEY
|
|
55
|
+
Used in: src/payment.js, src/checkout.ts
|
|
56
|
+
⢠API_KEY
|
|
57
|
+
Used in: src/api/client.ts
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
Defined in .env but never used in code
|
|
59
|
+
ā Unused variables:
|
|
60
|
+
⢠OLD_API_URL
|
|
62
61
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
2. JWT_SECRET
|
|
67
|
-
Used in: src/auth/jwt.ts
|
|
62
|
+
Missing from .env.example:
|
|
63
|
+
⢠DATABASE_URL
|
|
64
|
+
⢠JWT_SECRET
|
|
68
65
|
|
|
69
|
-
|
|
66
|
+
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
67
|
+
|
|
68
|
+
ā Total: 5 issue(s) across 1 location(s)
|
|
69
|
+
|
|
70
|
+
Run `envguard fix` to auto-generate .env.example
|
|
70
71
|
```
|
|
71
72
|
|
|
72
73
|
### Auto-generate .env.example
|
|
@@ -248,17 +249,17 @@ provider:
|
|
|
248
249
|
### Scan output for serverless.yml
|
|
249
250
|
|
|
250
251
|
```
|
|
251
|
-
|
|
252
|
+
Checking src/lambda/serverless.yml
|
|
252
253
|
|
|
253
254
|
Found 3 variable(s) in serverless.yml
|
|
254
255
|
Found 2 variable(s) used in code
|
|
255
256
|
|
|
256
|
-
|
|
257
|
-
|
|
257
|
+
ā Unused variables in serverless.yml:
|
|
258
|
+
⢠DATABASE_URL
|
|
258
259
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
260
|
+
ā Missing from serverless.yml:
|
|
261
|
+
⢠LOG_LEVEL
|
|
262
|
+
Used in: src/lambda/handler.js
|
|
262
263
|
```
|
|
263
264
|
|
|
264
265
|
### Key Features
|
|
@@ -296,7 +297,7 @@ envguard scan --strict
|
|
|
296
297
|
|
|
297
298
|
Example output (non-strict):
|
|
298
299
|
```
|
|
299
|
-
|
|
300
|
+
Skipped known runtime variables (use --strict to show):
|
|
300
301
|
Serverless Framework: IS_OFFLINE, SLS_OFFLINE
|
|
301
302
|
CI/CD: CI
|
|
302
303
|
AWS Lambda: AWS_REGION
|
package/dist/cli.js
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
const commander_1 = require("commander");
|
|
5
5
|
const scan_1 = require("./commands/scan");
|
|
6
6
|
const fix_1 = require("./commands/fix");
|
|
7
|
+
const logger_1 = require("./utils/logger");
|
|
7
8
|
const program = new commander_1.Command();
|
|
8
9
|
program
|
|
9
10
|
.name('envguard')
|
|
@@ -19,7 +20,7 @@ program
|
|
|
19
20
|
await (0, scan_1.scanCommand)(options);
|
|
20
21
|
}
|
|
21
22
|
catch (error) {
|
|
22
|
-
|
|
23
|
+
logger_1.Logger.error(`${error}`);
|
|
23
24
|
process.exit(1);
|
|
24
25
|
}
|
|
25
26
|
});
|
|
@@ -31,7 +32,7 @@ program
|
|
|
31
32
|
await (0, fix_1.fixCommand)();
|
|
32
33
|
}
|
|
33
34
|
catch (error) {
|
|
34
|
-
|
|
35
|
+
logger_1.Logger.error(`${error}`);
|
|
35
36
|
process.exit(1);
|
|
36
37
|
}
|
|
37
38
|
});
|
|
@@ -44,7 +45,7 @@ program
|
|
|
44
45
|
await (0, scan_1.scanCommand)({ ci: true, strict: options.strict });
|
|
45
46
|
}
|
|
46
47
|
catch (error) {
|
|
47
|
-
|
|
48
|
+
logger_1.Logger.error(`${error}`);
|
|
48
49
|
process.exit(1);
|
|
49
50
|
}
|
|
50
51
|
});
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAA8C;AAC9C,wCAA4C;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAA8C;AAC9C,wCAA4C;AAE5C,2CAAwC;AAExC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,4DAA4D,CAAC;KACzE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,MAAM,EAAE,kDAAkD,CAAC;KAClE,MAAM,CAAC,UAAU,EAAE,qFAAqF,CAAC;KACzG,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,IAAA,kBAAW,EAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,IAAA,gBAAU,GAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,UAAU,EAAE,qFAAqF,CAAC;KACzG,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,IAAA,kBAAW,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"AAOA,wBAAsB,UAAU;;
|
|
1
|
+
{"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"AAOA,wBAAsB,UAAU;;GAwE/B"}
|
package/dist/commands/fix.js
CHANGED
|
@@ -32,28 +32,28 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
36
|
exports.fixCommand = fixCommand;
|
|
40
37
|
const path = __importStar(require("path"));
|
|
41
38
|
const fs = __importStar(require("fs"));
|
|
42
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
43
39
|
const codeScanner_1 = require("../scanner/codeScanner");
|
|
44
40
|
const envParser_1 = require("../parser/envParser");
|
|
45
41
|
const envAnalyzer_1 = require("../analyzer/envAnalyzer");
|
|
42
|
+
const logger_1 = require("../utils/logger");
|
|
46
43
|
async function fixCommand() {
|
|
47
44
|
const rootDir = process.cwd();
|
|
48
|
-
|
|
45
|
+
logger_1.Logger.startSpinner('Generating .env.example files...');
|
|
49
46
|
// Step 1: Find all .env files
|
|
50
47
|
const scanner = new codeScanner_1.CodeScanner(rootDir);
|
|
51
48
|
const envFiles = await scanner.findEnvFiles();
|
|
49
|
+
logger_1.Logger.stopSpinner();
|
|
52
50
|
if (envFiles.length === 0) {
|
|
53
|
-
|
|
51
|
+
logger_1.Logger.warning('No .env files found in the project');
|
|
52
|
+
logger_1.Logger.blank();
|
|
54
53
|
return { success: false };
|
|
55
54
|
}
|
|
56
|
-
|
|
55
|
+
logger_1.Logger.success(`Found ${envFiles.length} .env file(s)`);
|
|
56
|
+
logger_1.Logger.blank();
|
|
57
57
|
const parser = new envParser_1.EnvParser();
|
|
58
58
|
const analyzer = new envAnalyzer_1.EnvAnalyzer();
|
|
59
59
|
let totalVars = 0;
|
|
@@ -62,14 +62,16 @@ async function fixCommand() {
|
|
|
62
62
|
const envDir = path.dirname(envFilePath);
|
|
63
63
|
const relativePath = path.relative(rootDir, envDir);
|
|
64
64
|
const displayPath = relativePath || '.';
|
|
65
|
-
|
|
65
|
+
logger_1.Logger.path(`Processing ${displayPath}/`);
|
|
66
66
|
// Step 3: Scan code files in this directory and subdirectories
|
|
67
67
|
const usedVars = await scanDirectoryForVars(rootDir, envDir, scanner);
|
|
68
68
|
if (usedVars.size === 0) {
|
|
69
|
-
|
|
69
|
+
logger_1.Logger.info('No environment variables found in code', true);
|
|
70
|
+
logger_1.Logger.blank();
|
|
70
71
|
continue;
|
|
71
72
|
}
|
|
72
|
-
|
|
73
|
+
logger_1.Logger.success(`Found ${usedVars.size} variable(s) used in this directory`, true);
|
|
74
|
+
logger_1.Logger.blank();
|
|
73
75
|
// Step 4: Parse existing .env.example to preserve comments
|
|
74
76
|
const examplePath = path.join(envDir, '.env.example');
|
|
75
77
|
const existingEntries = parser.parse(examplePath);
|
|
@@ -77,16 +79,18 @@ async function fixCommand() {
|
|
|
77
79
|
const newContent = analyzer.generateExampleContent(usedVars, existingEntries);
|
|
78
80
|
// Step 6: Write to .env.example
|
|
79
81
|
fs.writeFileSync(examplePath, newContent, 'utf-8');
|
|
80
|
-
|
|
82
|
+
logger_1.Logger.success(`Generated ${path.relative(rootDir, examplePath)}`, true);
|
|
83
|
+
logger_1.Logger.blank();
|
|
81
84
|
totalVars += usedVars.size;
|
|
82
85
|
// Step 7: Show summary for this directory
|
|
83
86
|
const definedVars = parser.parse(envFilePath);
|
|
84
87
|
const missingFromEnv = Array.from(usedVars.keys()).filter(v => !definedVars.has(v));
|
|
85
88
|
if (missingFromEnv.length > 0) {
|
|
86
|
-
|
|
89
|
+
logger_1.Logger.warning(`Missing from .env: ${missingFromEnv.join(', ')}`, true);
|
|
90
|
+
logger_1.Logger.blank();
|
|
87
91
|
}
|
|
88
92
|
}
|
|
89
|
-
|
|
93
|
+
logger_1.Logger.summary(`Generated ${envFiles.length} .env.example file(s) with ${totalVars} total variables`);
|
|
90
94
|
return { success: true };
|
|
91
95
|
}
|
|
92
96
|
async function scanDirectoryForVars(rootDir, targetDir, scanner) {
|
package/dist/commands/fix.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAKjC,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,EAAE,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE;;;GAmO5E"}
|
package/dist/commands/scan.js
CHANGED
|
@@ -32,13 +32,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
36
|
exports.scanCommand = scanCommand;
|
|
40
37
|
const path = __importStar(require("path"));
|
|
41
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
42
38
|
const glob_1 = require("glob");
|
|
43
39
|
const codeScanner_1 = require("../scanner/codeScanner");
|
|
44
40
|
const envParser_1 = require("../parser/envParser");
|
|
@@ -46,22 +42,26 @@ const serverlessParser_1 = require("../parser/serverlessParser");
|
|
|
46
42
|
const envAnalyzer_1 = require("../analyzer/envAnalyzer");
|
|
47
43
|
const knownEnvVars_1 = require("../constants/knownEnvVars");
|
|
48
44
|
const configLoader_1 = require("../config/configLoader");
|
|
45
|
+
const logger_1 = require("../utils/logger");
|
|
49
46
|
async function scanCommand(options) {
|
|
50
47
|
const rootDir = process.cwd();
|
|
51
48
|
// Load configuration
|
|
52
49
|
const config = configLoader_1.ConfigLoader.loadConfig(rootDir);
|
|
53
50
|
// CLI options override config file
|
|
54
51
|
const strictMode = options.strict !== undefined ? options.strict : config.strict;
|
|
55
|
-
|
|
52
|
+
logger_1.Logger.startSpinner('Scanning codebase for environment variables...');
|
|
56
53
|
// Step 1: Find all .env files and serverless.yml files
|
|
57
54
|
const scanner = new codeScanner_1.CodeScanner(rootDir);
|
|
58
55
|
const envFiles = await scanner.findEnvFiles();
|
|
59
56
|
const serverlessFiles = await scanner.findServerlessFiles();
|
|
57
|
+
logger_1.Logger.stopSpinner();
|
|
60
58
|
if (envFiles.length === 0 && serverlessFiles.length === 0) {
|
|
61
|
-
|
|
59
|
+
logger_1.Logger.warning('No .env or serverless.yml files found in the project');
|
|
60
|
+
logger_1.Logger.blank();
|
|
62
61
|
return { success: false, issues: [] };
|
|
63
62
|
}
|
|
64
|
-
|
|
63
|
+
logger_1.Logger.success(`Found ${envFiles.length} .env file(s) and ${serverlessFiles.length} serverless.yml file(s)`);
|
|
64
|
+
logger_1.Logger.blank();
|
|
65
65
|
const parser = new envParser_1.EnvParser();
|
|
66
66
|
const serverlessParser = new serverlessParser_1.ServerlessParser();
|
|
67
67
|
const analyzer = new envAnalyzer_1.EnvAnalyzer();
|
|
@@ -70,13 +70,15 @@ async function scanCommand(options) {
|
|
|
70
70
|
for (const serverlessFilePath of serverlessFiles) {
|
|
71
71
|
const serverlessDir = path.dirname(serverlessFilePath);
|
|
72
72
|
const relativePath = path.relative(rootDir, serverlessFilePath);
|
|
73
|
-
|
|
73
|
+
logger_1.Logger.path(`Checking ${relativePath}`);
|
|
74
|
+
logger_1.Logger.blank();
|
|
74
75
|
// Parse serverless.yml
|
|
75
76
|
const serverlessVars = serverlessParser.parse(serverlessFilePath);
|
|
76
|
-
|
|
77
|
+
logger_1.Logger.info(`Found ${serverlessVars.size} variable(s) in serverless.yml`, true);
|
|
77
78
|
// Scan code files in this directory to see what's actually used
|
|
78
79
|
const usedVars = await scanDirectoryForCodeVars(rootDir, serverlessDir, scanner);
|
|
79
|
-
|
|
80
|
+
logger_1.Logger.info(`Found ${usedVars.size} variable(s) used in code`, true);
|
|
81
|
+
logger_1.Logger.blank();
|
|
80
82
|
// Check for unused variables in serverless.yml
|
|
81
83
|
const unusedServerlessVars = [];
|
|
82
84
|
for (const [varName] of serverlessVars.entries()) {
|
|
@@ -108,23 +110,23 @@ async function scanCommand(options) {
|
|
|
108
110
|
}
|
|
109
111
|
}
|
|
110
112
|
if (unusedServerlessVars.length > 0) {
|
|
111
|
-
|
|
112
|
-
unusedServerlessVars.forEach((varName
|
|
113
|
-
|
|
113
|
+
logger_1.Logger.warning('Unused variables in serverless.yml:', true);
|
|
114
|
+
unusedServerlessVars.forEach((varName) => {
|
|
115
|
+
logger_1.Logger.warningItem(varName, 2);
|
|
114
116
|
allIssues.push({
|
|
115
117
|
type: 'unused',
|
|
116
118
|
varName,
|
|
117
119
|
details: `Defined in serverless.yml but never used in code`,
|
|
118
120
|
});
|
|
119
121
|
});
|
|
120
|
-
|
|
122
|
+
logger_1.Logger.blank();
|
|
121
123
|
}
|
|
122
124
|
if (missingFromServerless.length > 0) {
|
|
123
|
-
|
|
124
|
-
missingFromServerless.forEach((item
|
|
125
|
-
|
|
125
|
+
logger_1.Logger.error('Missing from serverless.yml:', true);
|
|
126
|
+
missingFromServerless.forEach((item) => {
|
|
127
|
+
logger_1.Logger.errorItem(item.varName, 2);
|
|
126
128
|
if (item.locations && item.locations.length > 0) {
|
|
127
|
-
|
|
129
|
+
logger_1.Logger.info(`Used in: ${item.locations.slice(0, 2).join(', ')}`, true);
|
|
128
130
|
}
|
|
129
131
|
allIssues.push({
|
|
130
132
|
type: 'missing',
|
|
@@ -133,14 +135,15 @@ async function scanCommand(options) {
|
|
|
133
135
|
locations: item.locations,
|
|
134
136
|
});
|
|
135
137
|
});
|
|
136
|
-
|
|
138
|
+
logger_1.Logger.blank();
|
|
137
139
|
}
|
|
138
140
|
if (unusedServerlessVars.length === 0 && missingFromServerless.length === 0) {
|
|
139
|
-
|
|
141
|
+
logger_1.Logger.success('No issues in this serverless.yml', true);
|
|
142
|
+
logger_1.Logger.blank();
|
|
140
143
|
}
|
|
141
144
|
// Show skipped runtime variables in non-strict mode
|
|
142
145
|
if (!strictMode && skippedRuntimeVars.length > 0) {
|
|
143
|
-
|
|
146
|
+
logger_1.Logger.info('Skipped known runtime variables (use --strict to show):', true);
|
|
144
147
|
// Group by category
|
|
145
148
|
const grouped = new Map();
|
|
146
149
|
for (const { varName, category } of skippedRuntimeVars) {
|
|
@@ -150,9 +153,9 @@ async function scanCommand(options) {
|
|
|
150
153
|
grouped.get(category).push(varName);
|
|
151
154
|
}
|
|
152
155
|
for (const [category, vars] of grouped.entries()) {
|
|
153
|
-
|
|
156
|
+
logger_1.Logger.info(`${category}: ${vars.join(', ')}`, true);
|
|
154
157
|
}
|
|
155
|
-
|
|
158
|
+
logger_1.Logger.blank();
|
|
156
159
|
}
|
|
157
160
|
}
|
|
158
161
|
// Step 2b: Process each .env file (including directories that also have serverless.yml)
|
|
@@ -160,17 +163,19 @@ async function scanCommand(options) {
|
|
|
160
163
|
const envDir = path.dirname(envFilePath);
|
|
161
164
|
const relativePath = path.relative(rootDir, envDir);
|
|
162
165
|
const displayPath = relativePath || '.';
|
|
163
|
-
|
|
166
|
+
logger_1.Logger.path(`Checking ${displayPath}/`);
|
|
167
|
+
logger_1.Logger.blank();
|
|
164
168
|
// Step 3: Scan code files in this directory and subdirectories
|
|
165
169
|
const usedVars = await scanDirectoryForVars(rootDir, envDir, scanner);
|
|
166
|
-
|
|
170
|
+
logger_1.Logger.info(`Found ${usedVars.size} variable(s) used in this scope`, true);
|
|
167
171
|
// Step 4: Parse .env file
|
|
168
172
|
const definedVars = parser.parse(envFilePath);
|
|
169
|
-
|
|
173
|
+
logger_1.Logger.info(`Found ${definedVars.size} variable(s) in .env`, true);
|
|
170
174
|
// Step 5: Parse .env.example
|
|
171
175
|
const examplePath = path.join(envDir, '.env.example');
|
|
172
176
|
const exampleVars = parser.parseExample(examplePath);
|
|
173
|
-
|
|
177
|
+
logger_1.Logger.info(`Found ${exampleVars.size} variable(s) in .env.example`, true);
|
|
178
|
+
logger_1.Logger.blank();
|
|
174
179
|
// Step 6: Analyze and find issues
|
|
175
180
|
const result = analyzer.analyze(usedVars, definedVars, exampleVars);
|
|
176
181
|
if (result.issues.length > 0) {
|
|
@@ -179,49 +184,54 @@ async function scanCommand(options) {
|
|
|
179
184
|
const unusedIssues = result.issues.filter(i => i.type === 'unused');
|
|
180
185
|
const undocumentedIssues = result.issues.filter(i => i.type === 'undocumented');
|
|
181
186
|
if (missingIssues.length > 0) {
|
|
182
|
-
|
|
183
|
-
missingIssues.forEach((issue
|
|
184
|
-
|
|
187
|
+
logger_1.Logger.error('Missing from .env:', true);
|
|
188
|
+
missingIssues.forEach((issue) => {
|
|
189
|
+
logger_1.Logger.errorItem(issue.varName, 2);
|
|
185
190
|
if (issue.locations && issue.locations.length > 0) {
|
|
186
|
-
|
|
191
|
+
logger_1.Logger.info(`Used in: ${issue.locations.slice(0, 2).join(', ')}`, true);
|
|
187
192
|
}
|
|
188
193
|
});
|
|
189
|
-
|
|
194
|
+
logger_1.Logger.blank();
|
|
190
195
|
}
|
|
191
196
|
if (unusedIssues.length > 0) {
|
|
192
|
-
|
|
193
|
-
unusedIssues.forEach((issue
|
|
194
|
-
|
|
197
|
+
logger_1.Logger.warning('Unused variables:', true);
|
|
198
|
+
unusedIssues.forEach((issue) => {
|
|
199
|
+
logger_1.Logger.warningItem(issue.varName, 2);
|
|
195
200
|
});
|
|
196
|
-
|
|
201
|
+
logger_1.Logger.blank();
|
|
197
202
|
}
|
|
198
203
|
if (undocumentedIssues.length > 0) {
|
|
199
|
-
|
|
200
|
-
undocumentedIssues.forEach((issue
|
|
201
|
-
|
|
204
|
+
logger_1.Logger.info('Missing from .env.example:', true);
|
|
205
|
+
undocumentedIssues.forEach((issue) => {
|
|
206
|
+
logger_1.Logger.infoItem(issue.varName, 2);
|
|
202
207
|
});
|
|
203
|
-
|
|
208
|
+
logger_1.Logger.blank();
|
|
204
209
|
}
|
|
205
210
|
allIssues.push(...result.issues);
|
|
206
211
|
}
|
|
207
212
|
else {
|
|
208
|
-
|
|
213
|
+
logger_1.Logger.success('No issues in this directory', true);
|
|
214
|
+
logger_1.Logger.blank();
|
|
209
215
|
}
|
|
210
216
|
}
|
|
211
217
|
// Display summary
|
|
212
|
-
|
|
218
|
+
logger_1.Logger.divider();
|
|
213
219
|
if (allIssues.length === 0) {
|
|
214
|
-
|
|
220
|
+
logger_1.Logger.summary('No issues found! All environment variables are in sync.');
|
|
215
221
|
return { success: true, issues: [] };
|
|
216
222
|
}
|
|
217
|
-
|
|
223
|
+
logger_1.Logger.blank();
|
|
224
|
+
logger_1.Logger.warning(`Total: ${allIssues.length} issue(s) across ${envFiles.length} location(s)`);
|
|
225
|
+
logger_1.Logger.blank();
|
|
218
226
|
// Suggest fix
|
|
219
227
|
if (!options.ci) {
|
|
220
|
-
|
|
228
|
+
logger_1.Logger.info('Run `envguard fix` to auto-generate .env.example files');
|
|
229
|
+
logger_1.Logger.blank();
|
|
221
230
|
}
|
|
222
231
|
// Exit with error code in CI mode
|
|
223
232
|
if (options.ci) {
|
|
224
|
-
|
|
233
|
+
logger_1.Logger.error('Issues found. Exiting with error code 1.');
|
|
234
|
+
logger_1.Logger.blank();
|
|
225
235
|
process.exit(1);
|
|
226
236
|
}
|
|
227
237
|
return { success: false, issues: allIssues };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimalist red-themed logger inspired by Serverless Framework v4
|
|
3
|
+
* Uses minimal colors and simple symbols for a clean, professional look
|
|
4
|
+
*/
|
|
5
|
+
export declare class Logger {
|
|
6
|
+
private static spinnerFrames;
|
|
7
|
+
private static spinnerInterval;
|
|
8
|
+
private static currentFrame;
|
|
9
|
+
private static spinnerMessage;
|
|
10
|
+
/**
|
|
11
|
+
* Start an animated spinner with a message
|
|
12
|
+
*/
|
|
13
|
+
static startSpinner(message: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* Stop the spinner and clear the line
|
|
16
|
+
*/
|
|
17
|
+
static stopSpinner(finalMessage?: string): void;
|
|
18
|
+
/**
|
|
19
|
+
* Log a header/section message (minimalist, no icons)
|
|
20
|
+
*/
|
|
21
|
+
static header(message: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* Log a success message with checkmark
|
|
24
|
+
*/
|
|
25
|
+
static success(message: string, indent?: boolean): void;
|
|
26
|
+
/**
|
|
27
|
+
* Log an error message (red themed)
|
|
28
|
+
*/
|
|
29
|
+
static error(message: string, indent?: boolean): void;
|
|
30
|
+
/**
|
|
31
|
+
* Log a warning message (yellow/amber)
|
|
32
|
+
*/
|
|
33
|
+
static warning(message: string, indent?: boolean): void;
|
|
34
|
+
/**
|
|
35
|
+
* Log an info message (very minimal)
|
|
36
|
+
*/
|
|
37
|
+
static info(message: string, indent?: boolean): void;
|
|
38
|
+
/**
|
|
39
|
+
* Log a list item (error themed in red)
|
|
40
|
+
*/
|
|
41
|
+
static errorItem(message: string, indent?: number): void;
|
|
42
|
+
/**
|
|
43
|
+
* Log a list item (warning themed, yellow/amber)
|
|
44
|
+
*/
|
|
45
|
+
static warningItem(message: string, indent?: number): void;
|
|
46
|
+
/**
|
|
47
|
+
* Log a list item (info themed, very dim)
|
|
48
|
+
*/
|
|
49
|
+
static infoItem(message: string, indent?: number): void;
|
|
50
|
+
/**
|
|
51
|
+
* Log a divider
|
|
52
|
+
*/
|
|
53
|
+
static divider(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Log a blank line
|
|
56
|
+
*/
|
|
57
|
+
static blank(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Log a final summary message (Serverless-style)
|
|
60
|
+
*/
|
|
61
|
+
static summary(message: string): void;
|
|
62
|
+
/**
|
|
63
|
+
* Log a path/file reference (dimmed)
|
|
64
|
+
*/
|
|
65
|
+
static path(message: string, indent?: boolean): void;
|
|
66
|
+
/**
|
|
67
|
+
* Log deployment-style message (like "Deploying to stage dev")
|
|
68
|
+
*/
|
|
69
|
+
static deployment(message: string): void;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,aAAa,CAAsD;IAClF,OAAO,CAAC,MAAM,CAAC,eAAe,CAA+B;IAC7D,OAAO,CAAC,MAAM,CAAC,YAAY,CAAK;IAChC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAM;IAEnC;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM;IAgBnC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM;IAaxC;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM;IAI7B;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAQ;IAK9C;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAQ;IAK5C;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAQ;IAK9C;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAQ;IAK3C;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAI;IAK5C;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAI;IAK9C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAI;IAK3C;;OAEG;IACH,MAAM,CAAC,OAAO;IAId;;OAEG;IACH,MAAM,CAAC,KAAK;IAIZ;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM;IAI9B;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAQ;IAK3C;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM;CAGlC"}
|