@greenarmor/ges 1.5.0 → 1.5.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/commands/badge.js +3 -3
- package/dist/commands/fix.js +3 -2
- package/dist/commands/mcp-setup.js +2 -5
- package/dist/utils/project.js +3 -6
- package/package.json +14 -14
package/dist/commands/badge.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import { ensureGESInitialized, readJsonFile } from "../utils/project.js";
|
|
2
|
+
import { ensureGESInitialized, readJsonFile, writeFileSync } from "../utils/project.js";
|
|
3
3
|
import { generateBadgeSvg, injectBadgeIntoReadme, computeGrade, generateScoreExplainer } from "@greenarmor/ges-scoring-engine";
|
|
4
4
|
import { showNextStepsMenu } from "../utils/next-steps.js";
|
|
5
5
|
import * as fs from "node:fs";
|
|
@@ -21,7 +21,7 @@ export const badgeCommand = new Command("badge")
|
|
|
21
21
|
const svg = generateBadgeSvg(score);
|
|
22
22
|
const outputPath = path.resolve(root, options.output);
|
|
23
23
|
fs.mkdirSync(path.dirname(outputPath), { recursive: true });
|
|
24
|
-
|
|
24
|
+
writeFileSync(outputPath, svg);
|
|
25
25
|
const explainer = generateScoreExplainer(score);
|
|
26
26
|
console.log(`\n Badge generated: ${options.output}`);
|
|
27
27
|
console.log(` Score: ${score.overall}% (${score.overall_grade ?? computeGrade(score.overall)})`);
|
|
@@ -31,7 +31,7 @@ export const badgeCommand = new Command("badge")
|
|
|
31
31
|
const readmeContent = fs.readFileSync(readmePath, "utf-8");
|
|
32
32
|
const relativeBadgePath = path.relative(path.dirname(readmePath), outputPath);
|
|
33
33
|
const updated = injectBadgeIntoReadme(readmeContent, relativeBadgePath, explainer);
|
|
34
|
-
|
|
34
|
+
writeFileSync(readmePath, updated);
|
|
35
35
|
console.log(` Badge injected into ${options.readme}`);
|
|
36
36
|
}
|
|
37
37
|
else {
|
package/dist/commands/fix.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
2
|
import { ensureGESInitialized } from "../utils/project.js";
|
|
3
|
+
import { safeWriteJson } from "@greenarmor/ges-core";
|
|
3
4
|
import { runAudit, deduplicateFindings } from "@greenarmor/ges-audit-engine";
|
|
4
5
|
import { createAutoFixPlan, applyAutoFixAction, getNpmInstallsFromActions } from "@greenarmor/ges-mcp-server";
|
|
5
6
|
import { appendFixHistory, createFixHistoryEntry, recordActivity, loadControlsFromDisk, loadControlOverrides, applyOverridesToControls } from "@greenarmor/ges-core";
|
|
@@ -42,9 +43,9 @@ export const fixCommand = new Command("fix")
|
|
|
42
43
|
const findings = deduplicateFindings(rawFindings);
|
|
43
44
|
const projectControls = loadProjectControls(root);
|
|
44
45
|
try {
|
|
45
|
-
|
|
46
|
+
safeWriteJson(path.join(root, ".ges", "last-audit.json"), {
|
|
46
47
|
findings, scannedFiles, timestamp: new Date().toISOString(),
|
|
47
|
-
}
|
|
48
|
+
});
|
|
48
49
|
}
|
|
49
50
|
catch { /* ignore persistence errors */ }
|
|
50
51
|
console.log(` Scanned ${scannedFiles} files`);
|
|
@@ -3,6 +3,7 @@ import * as fs from "node:fs";
|
|
|
3
3
|
import * as path from "node:path";
|
|
4
4
|
import * as os from "node:os";
|
|
5
5
|
import * as url from "node:url";
|
|
6
|
+
import { safeWriteFile } from "@greenarmor/ges-core";
|
|
6
7
|
import { select } from "../utils/prompts.js";
|
|
7
8
|
import { showNextStepsMenu } from "../utils/next-steps.js";
|
|
8
9
|
const __dirname = path.dirname(url.fileURLToPath(import.meta.url));
|
|
@@ -136,11 +137,7 @@ function readJsonFile(filePath) {
|
|
|
136
137
|
}
|
|
137
138
|
}
|
|
138
139
|
function writeJsonFile(filePath, data) {
|
|
139
|
-
|
|
140
|
-
if (!fs.existsSync(dir)) {
|
|
141
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
142
|
-
}
|
|
143
|
-
fs.writeFileSync(filePath, JSON.stringify(data, null, 2) + "\n");
|
|
140
|
+
safeWriteFile(filePath, JSON.stringify(data, null, 2) + "\n");
|
|
144
141
|
}
|
|
145
142
|
function addServerToConfig(config, client) {
|
|
146
143
|
const result = { ...config };
|
package/dist/utils/project.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
2
|
import * as path from "node:path";
|
|
3
|
+
import { safeWriteFile, safeWriteJson } from "@greenarmor/ges-core";
|
|
3
4
|
export const GES_DIR = ".ges";
|
|
4
5
|
export function findProjectRoot(startDir = process.cwd()) {
|
|
5
6
|
let dir = startDir;
|
|
@@ -21,11 +22,7 @@ export function ensureGESInitialized() {
|
|
|
21
22
|
return root;
|
|
22
23
|
}
|
|
23
24
|
export function writeFileSync(filePath, content) {
|
|
24
|
-
|
|
25
|
-
if (!fs.existsSync(dir)) {
|
|
26
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
27
|
-
}
|
|
28
|
-
fs.writeFileSync(filePath, content, "utf-8");
|
|
25
|
+
safeWriteFile(filePath, content);
|
|
29
26
|
}
|
|
30
27
|
export function readJsonFile(filePath) {
|
|
31
28
|
try {
|
|
@@ -37,5 +34,5 @@ export function readJsonFile(filePath) {
|
|
|
37
34
|
}
|
|
38
35
|
}
|
|
39
36
|
export function writeJsonFile(filePath, data) {
|
|
40
|
-
|
|
37
|
+
safeWriteJson(filePath, data);
|
|
41
38
|
}
|
package/package.json
CHANGED
|
@@ -3,19 +3,19 @@
|
|
|
3
3
|
"ges": "./dist/cli.js"
|
|
4
4
|
},
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@greenarmor/ges-audit-engine": "1.5.
|
|
7
|
-
"@greenarmor/ges-cicd-generator": "1.5.
|
|
8
|
-
"@greenarmor/ges-compliance-engine": "1.5.
|
|
9
|
-
"@greenarmor/ges-core": "1.5.
|
|
10
|
-
"@greenarmor/ges-doc-generator": "1.5.
|
|
11
|
-
"@greenarmor/ges-git-hooks": "1.5.
|
|
12
|
-
"@greenarmor/ges-mcp-server": "1.5.
|
|
13
|
-
"@greenarmor/ges-policy-engine": "1.5.
|
|
14
|
-
"@greenarmor/ges-report-generator": "1.5.
|
|
15
|
-
"@greenarmor/ges-rules-engine": "1.5.
|
|
16
|
-
"@greenarmor/ges-scanner-integration": "1.5.
|
|
17
|
-
"@greenarmor/ges-scoring-engine": "1.5.
|
|
18
|
-
"@greenarmor/ges-web-dashboard": "1.5.
|
|
6
|
+
"@greenarmor/ges-audit-engine": "1.5.2",
|
|
7
|
+
"@greenarmor/ges-cicd-generator": "1.5.2",
|
|
8
|
+
"@greenarmor/ges-compliance-engine": "1.5.2",
|
|
9
|
+
"@greenarmor/ges-core": "1.5.2",
|
|
10
|
+
"@greenarmor/ges-doc-generator": "1.5.2",
|
|
11
|
+
"@greenarmor/ges-git-hooks": "1.5.2",
|
|
12
|
+
"@greenarmor/ges-mcp-server": "1.5.2",
|
|
13
|
+
"@greenarmor/ges-policy-engine": "1.5.2",
|
|
14
|
+
"@greenarmor/ges-report-generator": "1.5.2",
|
|
15
|
+
"@greenarmor/ges-rules-engine": "1.5.2",
|
|
16
|
+
"@greenarmor/ges-scanner-integration": "1.5.2",
|
|
17
|
+
"@greenarmor/ges-scoring-engine": "1.5.2",
|
|
18
|
+
"@greenarmor/ges-web-dashboard": "1.5.2",
|
|
19
19
|
"chalk": "^5.6.2",
|
|
20
20
|
"commander": "^13.0.0"
|
|
21
21
|
},
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
},
|
|
61
61
|
"type": "module",
|
|
62
62
|
"types": "./dist/index.d.ts",
|
|
63
|
-
"version": "1.5.
|
|
63
|
+
"version": "1.5.2",
|
|
64
64
|
"scripts": {
|
|
65
65
|
"build": "tsc",
|
|
66
66
|
"clean": "rm -rf dist tsconfig.tsbuildinfo",
|