@danielszlaski/envguard 0.1.7 → 0.1.9
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/.github/FUNDING.yml +1 -1
- package/README.md +251 -92
- package/dist/analyzer/envAnalyzer.d.ts +1 -0
- package/dist/analyzer/envAnalyzer.d.ts.map +1 -1
- package/dist/analyzer/envAnalyzer.js +12 -5
- package/dist/analyzer/envAnalyzer.js.map +1 -1
- package/dist/cli.js +7 -25
- package/dist/cli.js.map +1 -1
- package/dist/commands/install-hook.js +4 -4
- package/dist/commands/install-hook.js.map +1 -1
- package/dist/commands/scan.d.ts +2 -0
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +36 -10
- package/dist/commands/scan.js.map +1 -1
- package/dist/config/configLoader.d.ts +11 -0
- package/dist/config/configLoader.d.ts.map +1 -1
- package/dist/config/configLoader.js +36 -22
- package/dist/config/configLoader.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/scanner/codeScanner.d.ts +5 -1
- package/dist/scanner/codeScanner.d.ts.map +1 -1
- package/dist/scanner/codeScanner.js +39 -12
- package/dist/scanner/codeScanner.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/analyzer/envAnalyzer.ts +11 -6
- package/src/cli.ts +7 -28
- package/src/commands/install-hook.ts +4 -4
- package/src/commands/scan.ts +46 -14
- package/src/config/configLoader.ts +43 -22
- package/src/index.ts +1 -1
- package/src/scanner/codeScanner.ts +49 -16
- package/src/types.ts +1 -1
- package/src/commands/check.ts +0 -6
package/.github/FUNDING.yml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# These are supported funding model platforms
|
|
2
2
|
|
|
3
|
-
github: szlaskidaniel # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
|
3
|
+
#github: szlaskidaniel # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
|
4
4
|
# patreon: # Replace with a single Patreon username
|
|
5
5
|
# open_collective: # Replace with a single Open Collective username
|
|
6
6
|
# ko_fi: # Replace with a single Ko-fi username
|
package/README.md
CHANGED
|
@@ -1,25 +1,45 @@
|
|
|
1
1
|
# EnvGuard CLI
|
|
2
|
-
|
|
2
|
+
[](https://www.npmjs.com/package/@danielszlaski/envguard)
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
### Static analysis for environment variables you can actually trust
|
|
5
5
|
|
|
6
|
+
EnvGuard helps you keep environment variables clean, documented, and consistent across your entire codebase.
|
|
7
|
+
No more guessing, broken deploys, or outdated `.env.example` files.
|
|
6
8
|
|
|
7
|
-
## The Problem
|
|
8
9
|
|
|
9
|
-
- `.env.example` is always out of sync with actual `.env`
|
|
10
|
-
- New developers don't know what environment variables they need
|
|
11
|
-
- Production secrets accidentally committed
|
|
12
|
-
- Dead environment variables cluttering your config
|
|
13
10
|
|
|
14
|
-
##
|
|
11
|
+
## Why EnvGuard exists
|
|
15
12
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
13
|
+
Environment variables tend to rot over time. Teams move fast, infrastructure evolves, and configuration quietly drifts.
|
|
14
|
+
|
|
15
|
+
Common pain points:
|
|
16
|
+
- `.env.example` does not match real usage anymore
|
|
17
|
+
- New developers waste time figuring out required variables
|
|
18
|
+
- Secrets accidentally leak into repositories
|
|
19
|
+
- Old variables linger forever with no owner
|
|
20
|
+
- CI fails late due to missing configuration
|
|
21
|
+
- Serverless configs and code fall out of sync
|
|
22
|
+
|
|
23
|
+
EnvGuard was built to eliminate this entire class of problems automatically.
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
## What EnvGuard does for you
|
|
28
|
+
|
|
29
|
+
EnvGuard continuously validates how environment variables are **defined**, **used**, and **documented**.
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
- Scans your codebase for environment variable usage
|
|
33
|
+
- Compares usage with `.env` and `.env.example`
|
|
34
|
+
- Detects missing, unused, and hardcoded variables
|
|
35
|
+
- Understands fallback patterns and adjusts severity intelligently
|
|
36
|
+
- Keeps `.env.example` files accurate and up to date
|
|
22
37
|
- **Supports multiple `.env` files** in subdirectories (monorepo-friendly!)
|
|
38
|
+
- Integrates cleanly into Git hooks and CI pipelines
|
|
39
|
+
|
|
40
|
+
Result: fewer runtime surprises, faster onboarding, and safer releases.
|
|
41
|
+
|
|
42
|
+
|
|
23
43
|
|
|
24
44
|
## Installation
|
|
25
45
|
|
|
@@ -59,7 +79,7 @@ envguard install-hook --type pre-push
|
|
|
59
79
|
envguard install-hook --force
|
|
60
80
|
```
|
|
61
81
|
|
|
62
|
-
Once installed, the hook will automatically run `envguard
|
|
82
|
+
Once installed, the hook will automatically run `envguard scan --ci` before each commit (or push). If issues are found, the commit/push will be blocked until you fix them.
|
|
63
83
|
|
|
64
84
|
**Bypass the hook** when needed:
|
|
65
85
|
```bash
|
|
@@ -77,7 +97,7 @@ envguard uninstall-hook --type pre-push
|
|
|
77
97
|
|
|
78
98
|
**How it works:**
|
|
79
99
|
- The hook creates a script in `.git/hooks/pre-commit` (or `pre-push`)
|
|
80
|
-
- Before each commit/push, it runs `envguard
|
|
100
|
+
- Before each commit/push, it runs `envguard scan --ci`
|
|
81
101
|
- If issues are found, the operation is blocked
|
|
82
102
|
- Team members need to install the hook individually (it's not tracked in git)
|
|
83
103
|
|
|
@@ -85,37 +105,39 @@ envguard uninstall-hook --type pre-push
|
|
|
85
105
|
|
|
86
106
|
```bash
|
|
87
107
|
envguard scan
|
|
108
|
+
|
|
109
|
+
# Exclude specific file patterns from scanning
|
|
110
|
+
envguard scan --exclude "tests/**,scripts/**"
|
|
111
|
+
|
|
112
|
+
# Ignore specific variables (merged with config ignoreVars)
|
|
113
|
+
envguard scan --ignore-vars MY_VAR,ANOTHER_VAR
|
|
88
114
|
```
|
|
89
115
|
|
|
90
116
|
Example output:
|
|
91
117
|
|
|
92
118
|
```
|
|
93
|
-
|
|
119
|
+
Loaded config from ../.envguardrc.json
|
|
94
120
|
|
|
95
|
-
Checking ./
|
|
96
121
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
Found 8 variable(s) in .env.example
|
|
122
|
+
Scanning env sources:
|
|
123
|
+
• serverless.yml
|
|
100
124
|
|
|
101
|
-
|
|
102
|
-
•
|
|
103
|
-
|
|
104
|
-
•
|
|
105
|
-
|
|
125
|
+
Unused variables:
|
|
126
|
+
• NODE_ENV
|
|
127
|
+
• STAGE
|
|
128
|
+
• OKTA_DOMAIN
|
|
129
|
+
• OKTA_CLIENT_ID
|
|
106
130
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
• JWT_SECRET
|
|
131
|
+
Skipped known runtime/ignored variables (use --strict to show):
|
|
132
|
+
Custom (from config/CLI): LOCALHOST, STAGE
|
|
133
|
+
Serverless Framework: IS_OFFLINE, SLS_OFFLINE
|
|
134
|
+
CI/CD: CI
|
|
135
|
+
AWS Lambda: AWS_REGION
|
|
113
136
|
|
|
114
137
|
──────────────────────────────────────────────────
|
|
138
|
+
Info: 5
|
|
115
139
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
Run `envguard fix` to auto-generate .env.example
|
|
140
|
+
Run `envguard fix` to auto-generate .env.example files
|
|
119
141
|
```
|
|
120
142
|
|
|
121
143
|
### Auto-generate .env.example
|
|
@@ -151,13 +173,13 @@ PORT=
|
|
|
151
173
|
|
|
152
174
|
### CI/CD Integration
|
|
153
175
|
|
|
154
|
-
Use the `
|
|
176
|
+
Use the `--ci` flag in your CI pipeline to fail builds if environment variables are out of sync:
|
|
155
177
|
|
|
156
178
|
```bash
|
|
157
|
-
envguard
|
|
179
|
+
envguard scan --ci
|
|
158
180
|
```
|
|
159
181
|
|
|
160
|
-
This
|
|
182
|
+
This will exit with code 1 if issues are found.
|
|
161
183
|
|
|
162
184
|
## GitHub Actions Setup
|
|
163
185
|
|
|
@@ -195,55 +217,6 @@ jobs:
|
|
|
195
217
|
|
|
196
218
|
**That's it!** No installation needed - `npx` downloads EnvGuard on demand.
|
|
197
219
|
|
|
198
|
-
### Advanced Setup - With PR Comments
|
|
199
|
-
|
|
200
|
-
Get automatic comments on pull requests when issues are found:
|
|
201
|
-
|
|
202
|
-
```yaml
|
|
203
|
-
name: Environment Variables Check
|
|
204
|
-
|
|
205
|
-
on:
|
|
206
|
-
pull_request:
|
|
207
|
-
branches: [main]
|
|
208
|
-
|
|
209
|
-
jobs:
|
|
210
|
-
envguard:
|
|
211
|
-
runs-on: ubuntu-latest
|
|
212
|
-
permissions:
|
|
213
|
-
pull-requests: write
|
|
214
|
-
|
|
215
|
-
steps:
|
|
216
|
-
- name: Checkout code
|
|
217
|
-
uses: actions/checkout@v4
|
|
218
|
-
|
|
219
|
-
- name: Setup Node.js
|
|
220
|
-
uses: actions/setup-node@v4
|
|
221
|
-
with:
|
|
222
|
-
node-version: '20.x'
|
|
223
|
-
|
|
224
|
-
- name: Run EnvGuard scan
|
|
225
|
-
id: envguard
|
|
226
|
-
continue-on-error: true
|
|
227
|
-
run: |
|
|
228
|
-
OUTPUT=$(npx @danielszlaski/envguard scan 2>&1)
|
|
229
|
-
echo "$OUTPUT"
|
|
230
|
-
echo "output<<EOF" >> $GITHUB_OUTPUT
|
|
231
|
-
echo "$OUTPUT" >> $GITHUB_OUTPUT
|
|
232
|
-
echo "EOF" >> $GITHUB_OUTPUT
|
|
233
|
-
npx @danielszlaski/envguard scan --ci
|
|
234
|
-
|
|
235
|
-
- name: Comment on PR if failed
|
|
236
|
-
if: failure()
|
|
237
|
-
uses: actions/github-script@v7
|
|
238
|
-
with:
|
|
239
|
-
script: |
|
|
240
|
-
github.rest.issues.createComment({
|
|
241
|
-
issue_number: context.issue.number,
|
|
242
|
-
owner: context.repo.owner,
|
|
243
|
-
repo: context.repo.repo,
|
|
244
|
-
body: '## ⚠️ EnvGuard Check Failed\n\n```\n${{ steps.envguard.outputs.output }}\n```\n\nPlease run `npx @danielszlaski/envguard fix` locally to generate `.env.example` files, then commit the changes.'
|
|
245
|
-
})
|
|
246
|
-
```
|
|
247
220
|
|
|
248
221
|
### Strict Mode in CI
|
|
249
222
|
|
|
@@ -368,7 +341,7 @@ EnvGuard works out of the box with sensible defaults. It automatically excludes:
|
|
|
368
341
|
|
|
369
342
|
### Custom Configuration
|
|
370
343
|
|
|
371
|
-
Create a
|
|
344
|
+
Create a configuration file in your project root. The following file names are recognised (in priority order): `.envguardrc.json`, `.envguardrc`, `envguard.config.json`, or a `"envguard"` key in `package.json`.
|
|
372
345
|
|
|
373
346
|
```json
|
|
374
347
|
{
|
|
@@ -473,6 +446,19 @@ Not all missing environment variables are equal. Variables with defensive fallba
|
|
|
473
446
|
|
|
474
447
|
Fallback detection uses regex patterns and catches common cases (~80% of real-world usage). Complex patterns like function calls with fallbacks or deeply nested conditionals may not be detected. For strict validation, use `--no-detect-fallbacks` or set `detectFallbacks: false` in your config.
|
|
475
448
|
|
|
449
|
+
### Hardcoded Value Detection
|
|
450
|
+
|
|
451
|
+
EnvGuard detects environment variables that are assigned directly in code instead of being read from the environment. These are reported as warnings because the value exists at runtime, but the pattern itself is a code smell — it bypasses `.env` management entirely.
|
|
452
|
+
|
|
453
|
+
**Detected patterns:**
|
|
454
|
+
|
|
455
|
+
```javascript
|
|
456
|
+
process.env.MY_VAR = 'some-value'; // WARNING — hardcoded assignment
|
|
457
|
+
process.env['API_KEY'] = 'sk_live_...'; // WARNING — hardcoded assignment
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
Hardcoded assignments are reported in their own group in the scan output, separate from missing or unused variables.
|
|
461
|
+
|
|
476
462
|
### Monorepo Support
|
|
477
463
|
|
|
478
464
|
EnvGuard automatically detects all `.env` files in your project, including subdirectories. When you run `envguard fix`, it creates a `.env.example` file next to each `.env` file it finds.
|
|
@@ -539,7 +525,7 @@ Checking src/lambda/serverless.yml
|
|
|
539
525
|
- **External references** - Detects SSM parameters, Secrets Manager, CloudFormation outputs
|
|
540
526
|
- **Function-level variables** - Scans both provider-level and function-specific environment vars
|
|
541
527
|
- **Smart filtering** - Automatically skips AWS/runtime variables (disable with `--strict`)
|
|
542
|
-
- **CI/CD validation** - Use `envguard
|
|
528
|
+
- **CI/CD validation** - Use `envguard scan --ci` to enforce serverless config completeness
|
|
543
529
|
|
|
544
530
|
## Commands
|
|
545
531
|
|
|
@@ -547,10 +533,9 @@ Checking src/lambda/serverless.yml
|
|
|
547
533
|
- `envguard scan --ci` - Scan and exit with error code if issues found
|
|
548
534
|
- `envguard scan --strict` - Report all variables including known runtime variables
|
|
549
535
|
- `envguard scan --no-detect-fallbacks` - Treat all missing variables as errors (ignore fallback detection)
|
|
536
|
+
- `envguard scan --exclude <patterns>` - Comma-separated glob patterns to exclude (merged with config `exclude`)
|
|
537
|
+
- `envguard scan --ignore-vars <vars>` - Comma-separated variables to ignore (merged with config `ignoreVars`)
|
|
550
538
|
- `envguard fix` - Auto-generate `.env.example`
|
|
551
|
-
- `envguard check` - Alias for `scan --ci`
|
|
552
|
-
- `envguard check --strict` - Check with strict mode enabled
|
|
553
|
-
- `envguard check --no-detect-fallbacks` - Check without fallback detection
|
|
554
539
|
- `envguard install-hook` - Install a Git pre-commit hook to run checks automatically
|
|
555
540
|
- `envguard install-hook --type pre-push` - Install a pre-push hook instead
|
|
556
541
|
- `envguard install-hook --force` - Overwrite existing hook if present
|
|
@@ -596,3 +581,177 @@ npm start scan
|
|
|
596
581
|
## License
|
|
597
582
|
|
|
598
583
|
MIT 2026 Daniel Szlaski
|
|
584
|
+
|
|
585
|
+
# EnvGuard CLI
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
---
|
|
592
|
+
|
|
593
|
+
## Supported platforms and frameworks
|
|
594
|
+
|
|
595
|
+
- Node.js JavaScript and TypeScript
|
|
596
|
+
- Serverless Framework projects
|
|
597
|
+
- Monorepos with nested services
|
|
598
|
+
- CI environments including GitHub Actions, GitLab CI, CircleCI, Travis
|
|
599
|
+
|
|
600
|
+
---
|
|
601
|
+
|
|
602
|
+
## Installation
|
|
603
|
+
|
|
604
|
+
### Global installation
|
|
605
|
+
|
|
606
|
+
```bash
|
|
607
|
+
npm install -g @danielszlaski/envguard
|
|
608
|
+
```
|
|
609
|
+
|
|
610
|
+
Then run:
|
|
611
|
+
```bash
|
|
612
|
+
envguard scan
|
|
613
|
+
```
|
|
614
|
+
|
|
615
|
+
### No installation using npx
|
|
616
|
+
|
|
617
|
+
```bash
|
|
618
|
+
npx @danielszlaski/envguard scan
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
---
|
|
622
|
+
|
|
623
|
+
## Core commands
|
|
624
|
+
|
|
625
|
+
### Scan for issues
|
|
626
|
+
|
|
627
|
+
```bash
|
|
628
|
+
envguard scan
|
|
629
|
+
```
|
|
630
|
+
|
|
631
|
+
Finds:
|
|
632
|
+
- Missing variables
|
|
633
|
+
- Unused variables
|
|
634
|
+
- Hardcoded assignments
|
|
635
|
+
- Drift between code and configuration
|
|
636
|
+
|
|
637
|
+
### Auto generate `.env.example`
|
|
638
|
+
|
|
639
|
+
```bash
|
|
640
|
+
envguard fix
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
Automatically creates or updates `.env.example` files with:
|
|
644
|
+
- All variables actually used
|
|
645
|
+
- Usage locations in code
|
|
646
|
+
- Helpful format hints
|
|
647
|
+
- Zero real secrets
|
|
648
|
+
|
|
649
|
+
Each `.env.example` is generated next to its corresponding `.env`, making it ideal for monorepos.
|
|
650
|
+
|
|
651
|
+
---
|
|
652
|
+
|
|
653
|
+
## Smart severity detection
|
|
654
|
+
|
|
655
|
+
EnvGuard understands intent.
|
|
656
|
+
|
|
657
|
+
```js
|
|
658
|
+
process.env.API_KEY // ERROR
|
|
659
|
+
process.env.PORT || 3000 // WARNING
|
|
660
|
+
process.env.DEBUG && log() // WARNING
|
|
661
|
+
```
|
|
662
|
+
|
|
663
|
+
- Errors indicate real runtime risk
|
|
664
|
+
- Warnings highlight defensive or optional usage
|
|
665
|
+
- Noise is reduced without hiding problems
|
|
666
|
+
|
|
667
|
+
Fallback detection can be disabled if strict enforcement is required.
|
|
668
|
+
|
|
669
|
+
---
|
|
670
|
+
|
|
671
|
+
## Git hook integration
|
|
672
|
+
|
|
673
|
+
Catch configuration issues before they ever reach CI.
|
|
674
|
+
|
|
675
|
+
```bash
|
|
676
|
+
envguard install-hook
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
Options:
|
|
680
|
+
- Pre commit or pre push hooks
|
|
681
|
+
- Forced overwrite
|
|
682
|
+
- Easy removal
|
|
683
|
+
|
|
684
|
+
Hooks run `envguard scan --ci` automatically and block commits when issues are found.
|
|
685
|
+
|
|
686
|
+
---
|
|
687
|
+
|
|
688
|
+
## CI and automation friendly
|
|
689
|
+
|
|
690
|
+
EnvGuard is designed for automation first.
|
|
691
|
+
|
|
692
|
+
```bash
|
|
693
|
+
envguard scan --ci
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
- Exits with non zero code on errors
|
|
697
|
+
- Perfect for CI pipelines
|
|
698
|
+
- No interactive output
|
|
699
|
+
- Fast and deterministic
|
|
700
|
+
|
|
701
|
+
Works out of the box with GitHub Actions, GitLab CI, CircleCI, and more.
|
|
702
|
+
|
|
703
|
+
---
|
|
704
|
+
|
|
705
|
+
## Serverless Framework support
|
|
706
|
+
|
|
707
|
+
EnvGuard treats `serverless.yml` as a first class configuration source.
|
|
708
|
+
|
|
709
|
+
It:
|
|
710
|
+
- Extracts provider and function level variables
|
|
711
|
+
- Validates that all variables are actually used
|
|
712
|
+
- Detects missing definitions referenced in code
|
|
713
|
+
- Understands SSM, Secrets Manager, and CloudFormation references
|
|
714
|
+
- Skips AWS runtime variables automatically unless strict mode is enabled
|
|
715
|
+
|
|
716
|
+
This prevents silent misconfiguration in Lambda based systems.
|
|
717
|
+
|
|
718
|
+
---
|
|
719
|
+
|
|
720
|
+
## Configuration
|
|
721
|
+
|
|
722
|
+
EnvGuard works without configuration, but can be customized via:
|
|
723
|
+
- `.envguardrc.json`
|
|
724
|
+
- `envguard.config.json`
|
|
725
|
+
- `package.json`
|
|
726
|
+
|
|
727
|
+
Example:
|
|
728
|
+
```json
|
|
729
|
+
{
|
|
730
|
+
"ignoreVars": ["COMPANY_INTERNAL_VAR"],
|
|
731
|
+
"strict": false,
|
|
732
|
+
"detectFallbacks": true,
|
|
733
|
+
"exclude": ["**/build/**"]
|
|
734
|
+
}
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
Priority:
|
|
738
|
+
CLI flags → config file → package.json → defaults
|
|
739
|
+
|
|
740
|
+
---
|
|
741
|
+
|
|
742
|
+
## Who EnvGuard is for
|
|
743
|
+
|
|
744
|
+
EnvGuard is ideal for:
|
|
745
|
+
- Teams onboarding new developers
|
|
746
|
+
- Projects with growing configuration surface area
|
|
747
|
+
- Serverless and microservice architectures
|
|
748
|
+
- Repositories with strict CI requirements
|
|
749
|
+
- Anyone tired of debugging missing env vars at runtime
|
|
750
|
+
|
|
751
|
+
If environment variables ever broke your deploy, EnvGuard pays for itself immediately.
|
|
752
|
+
|
|
753
|
+
---
|
|
754
|
+
|
|
755
|
+
## License
|
|
756
|
+
|
|
757
|
+
MIT © 2026 Daniel Szlaski
|
|
@@ -4,6 +4,7 @@ export declare class EnvAnalyzer {
|
|
|
4
4
|
analyze(usedVars: Map<string, {
|
|
5
5
|
locations: string[];
|
|
6
6
|
hasFallback: boolean;
|
|
7
|
+
isHardcoded?: boolean;
|
|
7
8
|
}>, definedVars: Map<string, EnvEntry>, exampleVars: Set<string>, detectFallbacks?: boolean): ScanResult;
|
|
8
9
|
generateExampleContent(usedVars: Map<string, {
|
|
9
10
|
locations: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzer/envAnalyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,qBAAa,WAAW;IACtB,OAAO,CACL,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"envAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzer/envAnalyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,qBAAa,WAAW;IACtB,OAAO,CACL,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,EAC3F,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAClC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,eAAe,GAAE,OAAc,GAC9B,UAAU;IAmDb,sBAAsB,CACpB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC,EACpE,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GACrC,MAAM;IA0CT,OAAO,CAAC,aAAa;CAkCtB"}
|
|
@@ -7,11 +7,18 @@ class EnvAnalyzer {
|
|
|
7
7
|
// Issue 1: Variables used in code but missing from .env
|
|
8
8
|
for (const [varName, usage] of usedVars.entries()) {
|
|
9
9
|
if (!definedVars.has(varName)) {
|
|
10
|
-
// If detectFallbacks is enabled and variable has a fallback, it's a WARNING, otherwise ERROR
|
|
11
|
-
const severity = (detectFallbacks && usage.hasFallback) ? 'warning' : 'error';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
// If detectFallbacks is enabled and variable has a fallback or is hardcoded, it's a WARNING, otherwise ERROR
|
|
11
|
+
const severity = (detectFallbacks && (usage.hasFallback || usage.isHardcoded)) ? 'warning' : 'error';
|
|
12
|
+
let details;
|
|
13
|
+
if (usage.isHardcoded) {
|
|
14
|
+
details = `Hardcoded in code (assigned programmatically)`;
|
|
15
|
+
}
|
|
16
|
+
else if (detectFallbacks && usage.hasFallback) {
|
|
17
|
+
details = `Used in code with fallback/default but not defined in .env`;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
details = `Used in code but not defined in .env`;
|
|
21
|
+
}
|
|
15
22
|
issues.push({
|
|
16
23
|
type: 'missing',
|
|
17
24
|
severity,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envAnalyzer.js","sourceRoot":"","sources":["../../src/analyzer/envAnalyzer.ts"],"names":[],"mappings":";;;AAGA,MAAa,WAAW;IACtB,OAAO,CACL,
|
|
1
|
+
{"version":3,"file":"envAnalyzer.js","sourceRoot":"","sources":["../../src/analyzer/envAnalyzer.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -6,23 +6,28 @@ const scan_1 = require("./commands/scan");
|
|
|
6
6
|
const fix_1 = require("./commands/fix");
|
|
7
7
|
const install_hook_1 = require("./commands/install-hook");
|
|
8
8
|
const logger_1 = require("./utils/logger");
|
|
9
|
+
const package_json_1 = require("../package.json");
|
|
9
10
|
const program = new commander_1.Command();
|
|
10
11
|
program
|
|
11
12
|
.name('envguard')
|
|
12
13
|
.description('Keep your environment variables in sync with your codebase')
|
|
13
|
-
.version(
|
|
14
|
+
.version(package_json_1.version);
|
|
14
15
|
program
|
|
15
16
|
.command('scan')
|
|
16
17
|
.description('Scan codebase and compare with .env files')
|
|
17
18
|
.option('--ci', 'Exit with error code if issues found (for CI/CD)')
|
|
18
19
|
.option('--strict', 'Report all variables including known runtime variables (AWS_REGION, NODE_ENV, etc.)')
|
|
19
20
|
.option('--no-detect-fallbacks', 'Treat all missing variables as errors, ignoring fallback detection')
|
|
21
|
+
.option('--exclude <patterns>', 'Comma-separated patterns to exclude (merged with config exclude)')
|
|
22
|
+
.option('--ignore-vars <vars>', 'Comma-separated list of variables to ignore (merged with ignoreVars from config)')
|
|
20
23
|
.action(async (cmd, command) => {
|
|
21
24
|
try {
|
|
22
25
|
// Build options object, only including detectFallbacks if the flag was used
|
|
23
26
|
const options = {
|
|
24
27
|
ci: cmd.ci,
|
|
25
|
-
strict: cmd.strict
|
|
28
|
+
strict: cmd.strict,
|
|
29
|
+
exclude: cmd.exclude,
|
|
30
|
+
ignoreVars: cmd.ignoreVars
|
|
26
31
|
};
|
|
27
32
|
// Check if the --no-detect-fallbacks flag was explicitly provided
|
|
28
33
|
// Commander adds it to the command's options when the flag is used
|
|
@@ -49,29 +54,6 @@ program
|
|
|
49
54
|
process.exit(1);
|
|
50
55
|
}
|
|
51
56
|
});
|
|
52
|
-
program
|
|
53
|
-
.command('check')
|
|
54
|
-
.description('Check for issues (alias for scan --ci)')
|
|
55
|
-
.option('--strict', 'Report all variables including known runtime variables (AWS_REGION, NODE_ENV, etc.)')
|
|
56
|
-
.option('--no-detect-fallbacks', 'Treat all missing variables as errors, ignoring fallback detection')
|
|
57
|
-
.action(async (cmd, command) => {
|
|
58
|
-
try {
|
|
59
|
-
const options = {
|
|
60
|
-
ci: true,
|
|
61
|
-
strict: cmd.strict
|
|
62
|
-
};
|
|
63
|
-
// Check if the --no-detect-fallbacks flag was explicitly provided
|
|
64
|
-
const flagProvided = command.parent?.rawArgs.some((arg) => arg.includes('detect-fallback'));
|
|
65
|
-
if (flagProvided) {
|
|
66
|
-
options.detectFallbacks = cmd.detectFallbacks;
|
|
67
|
-
}
|
|
68
|
-
await (0, scan_1.scanCommand)(options);
|
|
69
|
-
}
|
|
70
|
-
catch (error) {
|
|
71
|
-
logger_1.Logger.error(`${error}`);
|
|
72
|
-
process.exit(1);
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
57
|
program
|
|
76
58
|
.command('install-hook')
|
|
77
59
|
.description('Install a Git hook to run envguard automatically')
|
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":"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"}
|
|
@@ -72,7 +72,7 @@ async function installHookCommand(options = {}) {
|
|
|
72
72
|
fs.writeFileSync(hookPath, hookContent, { mode: 0o755 });
|
|
73
73
|
logger_1.Logger.success(`Installed ${hookType} hook successfully!`);
|
|
74
74
|
logger_1.Logger.blank();
|
|
75
|
-
logger_1.Logger.info('The hook will run `envguard
|
|
75
|
+
logger_1.Logger.info('The hook will run `envguard scan --ci` automatically before each ' +
|
|
76
76
|
(hookType === 'pre-commit' ? 'commit' : 'push'), true);
|
|
77
77
|
logger_1.Logger.info('To bypass the hook, use: git ' +
|
|
78
78
|
(hookType === 'pre-commit' ? 'commit' : 'push') + ' --no-verify', true);
|
|
@@ -98,7 +98,7 @@ async function uninstallHookCommand(options = {}) {
|
|
|
98
98
|
}
|
|
99
99
|
// Check if it's our hook
|
|
100
100
|
const hookContent = fs.readFileSync(hookPath, 'utf-8');
|
|
101
|
-
if (!hookContent.includes('envguard check')) {
|
|
101
|
+
if (!hookContent.includes('envguard scan --ci') && !hookContent.includes('envguard check')) {
|
|
102
102
|
logger_1.Logger.warning(`The ${hookType} hook exists but was not created by envguard.`);
|
|
103
103
|
logger_1.Logger.info('Manual removal required if you want to delete it.', true);
|
|
104
104
|
logger_1.Logger.blank();
|
|
@@ -127,8 +127,8 @@ function generateHookScript(hookType) {
|
|
|
127
127
|
|
|
128
128
|
echo "Running EnvGuard environment variable check..."
|
|
129
129
|
|
|
130
|
-
# Run envguard
|
|
131
|
-
npx envguard
|
|
130
|
+
# Run envguard scan --ci
|
|
131
|
+
npx envguard scan --ci
|
|
132
132
|
|
|
133
133
|
# Capture the exit code
|
|
134
134
|
EXIT_CODE=$?
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-hook.js","sourceRoot":"","sources":["../../src/commands/install-hook.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,gDA8CC;AAKD,oDA6BC;AA/FD,uCAAyB;AACzB,2CAA6B;AAC7B,4CAAyC;AAEzC,MAAM,UAAU,GAAG,CAAC,YAAY,EAAE,UAAU,CAAU,CAAC;AAQvD;;GAEG;AACI,KAAK,UAAU,kBAAkB,CAAC,UAA8B,EAAE;IACvE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE5C,oCAAoC;IACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,eAAM,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACnF,eAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gCAAgC;IAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,eAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE/C,+BAA+B;IAC/B,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC9C,eAAM,CAAC,OAAO,CAAC,GAAG,QAAQ,uBAAuB,CAAC,CAAC;QACnD,eAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE,IAAI,CAAC,CAAC;QAChE,eAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,yBAAyB;IACzB,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,eAAM,CAAC,OAAO,CAAC,aAAa,QAAQ,qBAAqB,CAAC,CAAC;QAC3D,eAAM,CAAC,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"install-hook.js","sourceRoot":"","sources":["../../src/commands/install-hook.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/scan.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAWA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,EAAE,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE;;;
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAWA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,EAAE,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;;;GAyOpK"}
|