dotenv-diff 1.1.0 → 1.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/dist/cli.js +14 -3
- package/dist/lib/diffEnv.js +15 -12
- package/package.json +10 -9
package/dist/cli.js
CHANGED
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
2
3
|
import path from "path";
|
|
3
4
|
import fs from "fs";
|
|
4
5
|
import chalk from "chalk";
|
|
5
6
|
import { parseEnvFile } from "./lib/parseEnv.js";
|
|
6
7
|
import { diffEnv } from "./lib/diffEnv.js";
|
|
8
|
+
const program = new Command();
|
|
9
|
+
program
|
|
10
|
+
.name('dotenv-diff')
|
|
11
|
+
.description('Compare .env and .env.example files')
|
|
12
|
+
.option('--check-values', 'Compare actual values if example has values')
|
|
13
|
+
.parse(process.argv);
|
|
14
|
+
const options = program.opts();
|
|
15
|
+
const checkValues = options.checkValues ?? false;
|
|
16
|
+
// Her kører din eksisterende diff-logik videre:
|
|
7
17
|
const envPath = path.resolve(process.cwd(), ".env");
|
|
8
18
|
const examplePath = path.resolve(process.cwd(), ".env.example");
|
|
9
19
|
if (!fs.existsSync(envPath)) {
|
|
@@ -17,7 +27,7 @@ if (!fs.existsSync(examplePath)) {
|
|
|
17
27
|
console.log(chalk.bold("🔍 Comparing .env and .env.example..."));
|
|
18
28
|
const current = parseEnvFile(envPath);
|
|
19
29
|
const example = parseEnvFile(examplePath);
|
|
20
|
-
const diff = diffEnv(current, example);
|
|
30
|
+
const diff = diffEnv(current, example, checkValues);
|
|
21
31
|
// Find tomme variabler i .env
|
|
22
32
|
const emptyKeys = Object.entries(current)
|
|
23
33
|
.filter(([key, value]) => value.trim() === "")
|
|
@@ -25,7 +35,8 @@ const emptyKeys = Object.entries(current)
|
|
|
25
35
|
let hasWarnings = false;
|
|
26
36
|
if (diff.missing.length === 0 &&
|
|
27
37
|
diff.extra.length === 0 &&
|
|
28
|
-
emptyKeys.length === 0
|
|
38
|
+
emptyKeys.length === 0 &&
|
|
39
|
+
diff.valueMismatches.length === 0) {
|
|
29
40
|
console.log(chalk.green("✅ All keys match! Your .env file is valid."));
|
|
30
41
|
process.exit(0);
|
|
31
42
|
}
|
|
@@ -42,7 +53,7 @@ if (emptyKeys.length > 0) {
|
|
|
42
53
|
console.log(chalk.yellow("\n⚠️ The following keys in .env have no value (empty):"));
|
|
43
54
|
emptyKeys.forEach((key) => console.log(chalk.yellow(` - ${key}`)));
|
|
44
55
|
}
|
|
45
|
-
if (diff.valueMismatches.length > 0) {
|
|
56
|
+
if (checkValues && diff.valueMismatches.length > 0) {
|
|
46
57
|
hasWarnings = true;
|
|
47
58
|
console.log(chalk.yellow("\n⚠️ The following keys have different values:"));
|
|
48
59
|
diff.valueMismatches.forEach(({ key, expected, actual }) => {
|
package/dist/lib/diffEnv.js
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
export function diffEnv(current, example) {
|
|
1
|
+
export function diffEnv(current, example, checkValues = false) {
|
|
2
2
|
const currentKeys = Object.keys(current);
|
|
3
3
|
const exampleKeys = Object.keys(example);
|
|
4
4
|
const missing = exampleKeys.filter((key) => !currentKeys.includes(key));
|
|
5
5
|
const extra = currentKeys.filter((key) => !exampleKeys.includes(key));
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
6
|
+
let valueMismatches = [];
|
|
7
|
+
if (checkValues) {
|
|
8
|
+
valueMismatches = exampleKeys
|
|
9
|
+
.filter((key) => {
|
|
10
|
+
return (currentKeys.includes(key) &&
|
|
11
|
+
example[key].trim() !== "" &&
|
|
12
|
+
current[key] !== example[key]);
|
|
13
|
+
})
|
|
14
|
+
.map((key) => ({
|
|
15
|
+
key,
|
|
16
|
+
expected: example[key],
|
|
17
|
+
actual: current[key],
|
|
18
|
+
}));
|
|
19
|
+
}
|
|
17
20
|
return { missing, extra, valueMismatches };
|
|
18
21
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dotenv-diff",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A small CLI and library to find differences between .env and .env.example files.",
|
|
6
6
|
"bin": {
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
"main": "dist/index.js",
|
|
10
10
|
"types": "dist/index.d.ts",
|
|
11
11
|
"files": [
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
],
|
|
12
|
+
"dist/cli.js",
|
|
13
|
+
"dist/lib/diffEnv.js",
|
|
14
|
+
"dist/lib/parseEnv.js",
|
|
15
|
+
"dist/index.js",
|
|
16
|
+
"dist/index.d.ts",
|
|
17
|
+
"README.md"
|
|
18
|
+
],
|
|
19
19
|
"scripts": {
|
|
20
20
|
"build": "tsc",
|
|
21
21
|
"dev": "vitest --watch",
|
|
@@ -41,7 +41,8 @@
|
|
|
41
41
|
"node": ">=14.0.0"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"chalk": "^5.4.1"
|
|
44
|
+
"chalk": "^5.4.1",
|
|
45
|
+
"commander": "^14.0.0"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
47
48
|
"@types/node": "^20.0.0",
|