cxgrd 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/dist/auth/audit-usage.js +34 -21
- package/dist/auth/audit-usage.js.map +1 -1
- package/dist/auth/auth-session.js +26 -20
- package/dist/auth/auth-session.js.map +1 -1
- package/dist/auth/auth-store.js +22 -16
- package/dist/auth/auth-store.js.map +1 -1
- package/dist/auth/entitlements.js +35 -22
- package/dist/auth/entitlements.js.map +1 -1
- package/dist/auth/open-browser.js +6 -3
- package/dist/auth/open-browser.js.map +1 -1
- package/dist/auth/plans.js +13 -6
- package/dist/auth/plans.js.map +1 -1
- package/dist/auth/plans.test.js +23 -18
- package/dist/auth/plans.test.js.map +1 -1
- package/dist/cg-directory.js +40 -35
- package/dist/cg-directory.js.map +1 -1
- package/dist/check/check-runner.js +16 -13
- package/dist/check/check-runner.js.map +1 -1
- package/dist/check/compiler-service.js +22 -19
- package/dist/check/compiler-service.js.map +1 -1
- package/dist/check/parsers/cargo.js +4 -1
- package/dist/check/parsers/cargo.js.map +1 -1
- package/dist/check/parsers/parsers.test.js +30 -25
- package/dist/check/parsers/parsers.test.js.map +1 -1
- package/dist/check/parsers/pyright.js +4 -1
- package/dist/check/parsers/pyright.js.map +1 -1
- package/dist/check/parsers/tsc-cli.js +4 -1
- package/dist/check/parsers/tsc-cli.js.map +1 -1
- package/dist/check/project-tooling.js +23 -16
- package/dist/check/project-tooling.js.map +1 -1
- package/dist/check/run-command.js +9 -5
- package/dist/check/run-command.js.map +1 -1
- package/dist/check/scope.js +14 -8
- package/dist/check/scope.js.map +1 -1
- package/dist/check/scope.test.js +15 -10
- package/dist/check/scope.test.js.map +1 -1
- package/dist/check/strict-mode.js +6 -2
- package/dist/check/strict-mode.js.map +1 -1
- package/dist/check/strict-mode.test.js +19 -14
- package/dist/check/strict-mode.test.js.map +1 -1
- package/dist/check/structural-checks.js +4 -1
- package/dist/check/structural-checks.js.map +1 -1
- package/dist/check/types.js +2 -1
- package/dist/check/verifiers/python.js +11 -8
- package/dist/check/verifiers/python.js.map +1 -1
- package/dist/check/verifiers/rust.js +11 -8
- package/dist/check/verifiers/rust.js.map +1 -1
- package/dist/check/verifiers/typescript.js +24 -18
- package/dist/check/verifiers/typescript.js.map +1 -1
- package/dist/commands/auth.js +42 -34
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/check.js +49 -43
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/doctor.js +33 -27
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init-hooks.js +34 -31
- package/dist/commands/init-hooks.js.map +1 -1
- package/dist/commands/input.js +46 -43
- package/dist/commands/input.js.map +1 -1
- package/dist/commands/prompt.js +40 -34
- package/dist/commands/prompt.js.map +1 -1
- package/dist/commands/scan.js +49 -43
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/watch.js +20 -17
- package/dist/commands/watch.js.map +1 -1
- package/dist/config/env.js +21 -16
- package/dist/config/env.js.map +1 -1
- package/dist/graph.js +38 -36
- package/dist/graph.js.map +1 -1
- package/dist/index.js +32 -27
- package/dist/index.js.map +1 -1
- package/dist/memory/pattern-analyzer.js +6 -2
- package/dist/memory/pattern-analyzer.js.map +1 -1
- package/dist/memory/repo-memory.js +10 -4
- package/dist/memory/repo-memory.js.map +1 -1
- package/dist/memory/types.js +2 -1
- package/dist/prompt/llm-client.js +10 -7
- package/dist/prompt/llm-client.js.map +1 -1
- package/dist/prompt/subgraph.js +10 -6
- package/dist/prompt/subgraph.js.map +1 -1
- package/dist/scanner.js +51 -49
- package/dist/scanner.js.map +1 -1
- package/dist/team/audit.js +10 -7
- package/dist/team/audit.js.map +1 -1
- package/dist/team/cloud-client.js +23 -17
- package/dist/team/cloud-client.js.map +1 -1
- package/dist/team/dev-store.js +34 -25
- package/dist/team/dev-store.js.map +1 -1
- package/dist/team/graph-sync.js +28 -20
- package/dist/team/graph-sync.js.map +1 -1
- package/dist/team/policy-cache.js +19 -14
- package/dist/team/policy-cache.js.map +1 -1
- package/dist/team/policy-engine.js +4 -1
- package/dist/team/policy-engine.js.map +1 -1
- package/dist/team/policy-engine.test.js +18 -13
- package/dist/team/policy-engine.test.js.map +1 -1
- package/dist/team/repo-identity.js +9 -6
- package/dist/team/repo-identity.js.map +1 -1
- package/dist/team/types.js +2 -1
- package/dist/toolchain/probe.js +23 -14
- package/dist/toolchain/probe.js.map +1 -1
- package/dist/toolchain/project-languages.js +20 -16
- package/dist/toolchain/project-languages.js.map +1 -1
- package/dist/toolchain/types.js +2 -1
- package/dist/utils/blast-radius-analyzer.js +7 -2
- package/dist/utils/blast-radius-analyzer.js.map +1 -1
- package/dist/utils/change-detector.js +8 -3
- package/dist/utils/change-detector.js.map +1 -1
- package/dist/utils/cli-formatter.js +34 -26
- package/dist/utils/cli-formatter.js.map +1 -1
- package/dist/utils/git-hook-manager.js +42 -34
- package/dist/utils/git-hook-manager.js.map +1 -1
- package/dist/utils/project-watcher.js +17 -12
- package/dist/utils/project-watcher.js.map +1 -1
- package/package.json +1 -2
package/dist/commands/check.js
CHANGED
|
@@ -1,54 +1,60 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.checkCommand = checkCommand;
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const cg_directory_1 = require("../cg-directory");
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
const check_runner_1 = require("../check/check-runner");
|
|
11
|
+
const scope_1 = require("../check/scope");
|
|
12
|
+
const auth_session_1 = require("../auth/auth-session");
|
|
13
|
+
const audit_1 = require("../team/audit");
|
|
14
|
+
const audit_usage_1 = require("../auth/audit-usage");
|
|
15
|
+
async function checkCommand(projectPath, options = {}) {
|
|
16
|
+
const rootPath = (0, path_1.resolve)(projectPath || process.cwd());
|
|
11
17
|
const scope = options.scope ?? 'all';
|
|
12
|
-
console.log(
|
|
18
|
+
console.log(chalk_1.default.blue('✓ Running cxgrd check...'));
|
|
13
19
|
if (scope !== 'all') {
|
|
14
|
-
console.log(
|
|
20
|
+
console.log(chalk_1.default.gray(` Scope: ${scope} files only`));
|
|
15
21
|
}
|
|
16
22
|
if (options.strict) {
|
|
17
|
-
console.log(
|
|
23
|
+
console.log(chalk_1.default.gray(' Mode: strict (skipped compilers fail the check)'));
|
|
18
24
|
}
|
|
19
25
|
try {
|
|
20
26
|
// Check free tier audit limit before running
|
|
21
|
-
const session = await resolveActiveSession();
|
|
27
|
+
const session = await (0, auth_session_1.resolveActiveSession)();
|
|
22
28
|
if (!session || session.plan === 'free') {
|
|
23
29
|
try {
|
|
24
|
-
await checkFreeAuditLimit();
|
|
30
|
+
await (0, audit_usage_1.checkFreeAuditLimit)();
|
|
25
31
|
}
|
|
26
32
|
catch (err) {
|
|
27
|
-
if (err instanceof AuditUsageExceededError) {
|
|
28
|
-
console.error(
|
|
33
|
+
if (err instanceof audit_usage_1.AuditUsageExceededError) {
|
|
34
|
+
console.error(chalk_1.default.red(`\n✗ ${err.message}`));
|
|
29
35
|
process.exit(1);
|
|
30
36
|
}
|
|
31
37
|
throw err;
|
|
32
38
|
}
|
|
33
39
|
}
|
|
34
|
-
const cgDir = new CgDirectory(rootPath);
|
|
40
|
+
const cgDir = new cg_directory_1.CgDirectory(rootPath);
|
|
35
41
|
const graph = await cgDir.readGraph();
|
|
36
42
|
const arch = await cgDir.readArch();
|
|
37
43
|
const history = await cgDir.readHistory();
|
|
38
44
|
if (!graph) {
|
|
39
|
-
console.error(
|
|
45
|
+
console.error(chalk_1.default.red('✗ No dependency graph found. Run "cxgrd scan" first.'));
|
|
40
46
|
process.exit(1);
|
|
41
47
|
}
|
|
42
|
-
const scopeFiles = scope === 'all' ? null : resolveScopeFiles(rootPath, scope);
|
|
48
|
+
const scopeFiles = scope === 'all' ? null : (0, scope_1.resolveScopeFiles)(rootPath, scope);
|
|
43
49
|
if (scopeFiles && scopeFiles.size === 0) {
|
|
44
|
-
console.log(
|
|
50
|
+
console.log(chalk_1.default.yellow(' No files in scope — skipping checks.'));
|
|
45
51
|
return;
|
|
46
52
|
}
|
|
47
|
-
console.log(
|
|
53
|
+
console.log(chalk_1.default.gray(' Structural analysis...'));
|
|
48
54
|
if (!options.skipCompiler) {
|
|
49
|
-
console.log(
|
|
55
|
+
console.log(chalk_1.default.gray(' Compiler verification (TypeScript, Python, Rust)...'));
|
|
50
56
|
}
|
|
51
|
-
const result = await runCheck(graph, arch, {
|
|
57
|
+
const result = await (0, check_runner_1.runCheck)(graph, arch, {
|
|
52
58
|
projectPath: rootPath,
|
|
53
59
|
scope,
|
|
54
60
|
skipStructural: options.skipStructural ?? false,
|
|
@@ -57,35 +63,35 @@ export async function checkCommand(projectPath, options = {}) {
|
|
|
57
63
|
});
|
|
58
64
|
printCompilerSummary(result.compilerSummary);
|
|
59
65
|
if (!options.strict && result.skippedLanguages.length > 0) {
|
|
60
|
-
console.log(
|
|
61
|
-
console.log(
|
|
66
|
+
console.log(chalk_1.default.yellow(` ⚠ Skipped compiler(s) for: ${result.skippedLanguages.join(', ')} — not counted as failures.`));
|
|
67
|
+
console.log(chalk_1.default.yellow(' Use --strict or run `cxgrd doctor` to fix your toolchain.'));
|
|
62
68
|
}
|
|
63
69
|
if (result.passed) {
|
|
64
|
-
console.log(
|
|
65
|
-
console.log(
|
|
70
|
+
console.log(chalk_1.default.green('✓ All checks passed!'));
|
|
71
|
+
console.log(chalk_1.default.gray(` ${result.summary}`));
|
|
66
72
|
}
|
|
67
73
|
else {
|
|
68
|
-
console.log(
|
|
74
|
+
console.log(chalk_1.default.red('✗ Issues found:'));
|
|
69
75
|
for (const issue of result.issues) {
|
|
70
76
|
const color = issue.severity === 'error'
|
|
71
|
-
?
|
|
77
|
+
? chalk_1.default.red
|
|
72
78
|
: issue.severity === 'warning'
|
|
73
|
-
?
|
|
74
|
-
:
|
|
79
|
+
? chalk_1.default.yellow
|
|
80
|
+
: chalk_1.default.blue;
|
|
75
81
|
const tag = issue.source === 'compiler' ? 'compiler' : 'structural';
|
|
76
82
|
console.log(color(` [${issue.severity.toUpperCase()}][${tag}] ${issue.message}`));
|
|
77
83
|
if (issue.file) {
|
|
78
84
|
const loc = issue.line ? `:${issue.line}` : '';
|
|
79
85
|
const code = issue.code ? ` (${issue.code})` : '';
|
|
80
|
-
console.log(
|
|
86
|
+
console.log(chalk_1.default.gray(` at ${issue.file}${loc}${code}`));
|
|
81
87
|
}
|
|
82
88
|
}
|
|
83
|
-
console.log(
|
|
89
|
+
console.log(chalk_1.default.gray(` ${result.summary}`));
|
|
84
90
|
}
|
|
85
91
|
// Increment audit count after successful run (for free tier tracking)
|
|
86
92
|
if (!session || session.plan === 'free') {
|
|
87
|
-
await incrementAuditCount();
|
|
88
|
-
await printAuditUsageStatus();
|
|
93
|
+
await (0, audit_usage_1.incrementAuditCount)();
|
|
94
|
+
await (0, audit_usage_1.printAuditUsageStatus)();
|
|
89
95
|
}
|
|
90
96
|
const historyEntry = {
|
|
91
97
|
timestamp: Date.now(),
|
|
@@ -107,7 +113,7 @@ export async function checkCommand(projectPath, options = {}) {
|
|
|
107
113
|
compiler: result.compilerSummary,
|
|
108
114
|
summary: result.summary,
|
|
109
115
|
});
|
|
110
|
-
await recordAuditEventIfTeam(session, rootPath, {
|
|
116
|
+
await (0, audit_1.recordAuditEventIfTeam)(session, rootPath, {
|
|
111
117
|
eventType: 'check',
|
|
112
118
|
passed: result.passed,
|
|
113
119
|
summary: result.summary,
|
|
@@ -123,23 +129,23 @@ export async function checkCommand(projectPath, options = {}) {
|
|
|
123
129
|
}
|
|
124
130
|
catch (err) {
|
|
125
131
|
const message = err instanceof Error ? err.message : String(err);
|
|
126
|
-
console.error(
|
|
132
|
+
console.error(chalk_1.default.red(`✗ Error: ${message}`));
|
|
127
133
|
process.exit(1);
|
|
128
134
|
}
|
|
129
135
|
}
|
|
130
136
|
function printCompilerSummary(summaries) {
|
|
131
137
|
if (summaries.length === 0)
|
|
132
138
|
return;
|
|
133
|
-
console.log(
|
|
139
|
+
console.log(chalk_1.default.gray(' Compiler runs:'));
|
|
134
140
|
for (const s of summaries) {
|
|
135
141
|
if (s.skipped) {
|
|
136
|
-
console.log(
|
|
142
|
+
console.log(chalk_1.default.gray(` · ${s.language} (${s.tool} @ ${s.projectRoot}): skipped — ${s.skipReason}`));
|
|
137
143
|
continue;
|
|
138
144
|
}
|
|
139
|
-
const status = s.passed ?
|
|
140
|
-
console.log(
|
|
145
|
+
const status = s.passed ? chalk_1.default.green('ok') : chalk_1.default.red('failed');
|
|
146
|
+
console.log(chalk_1.default.gray(` · ${s.language} (${s.tool} @ ${s.projectRoot}): `) +
|
|
141
147
|
status +
|
|
142
|
-
|
|
148
|
+
chalk_1.default.gray(` — ${s.errorCount} errors, ${s.warningCount} warnings`));
|
|
143
149
|
}
|
|
144
150
|
}
|
|
145
151
|
//# sourceMappingURL=check.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -1,58 +1,64 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.doctorCommand = doctorCommand;
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const probe_1 = require("../toolchain/probe");
|
|
10
|
+
async function doctorCommand(projectPath) {
|
|
11
|
+
const rootPath = projectPath ? (0, path_1.resolve)(projectPath) : undefined;
|
|
12
|
+
console.log(chalk_1.default.blue('✓ cxgrd doctor — environment & project readiness\n'));
|
|
13
|
+
const report = await (0, probe_1.buildDoctorReport)(rootPath);
|
|
14
|
+
console.log(chalk_1.default.bold('Runtime & tools'));
|
|
9
15
|
for (const probe of report.probes) {
|
|
10
|
-
const icon = probe.status === 'ok' ?
|
|
11
|
-
console.log(` ${icon} ${
|
|
12
|
-
console.log(
|
|
16
|
+
const icon = probe.status === 'ok' ? chalk_1.default.green('✓') : probe.status === 'warning' ? chalk_1.default.yellow('!') : chalk_1.default.red('✗');
|
|
17
|
+
console.log(` ${icon} ${chalk_1.default.bold(probe.name)}`);
|
|
18
|
+
console.log(chalk_1.default.gray(` ${probe.detail}`));
|
|
13
19
|
if (probe.status !== 'ok' && probe.installHint) {
|
|
14
|
-
console.log(
|
|
20
|
+
console.log(chalk_1.default.yellow(` → ${probe.installHint}`));
|
|
15
21
|
}
|
|
16
22
|
}
|
|
17
23
|
if (rootPath && report.projectNeeds) {
|
|
18
24
|
console.log('');
|
|
19
|
-
console.log(
|
|
25
|
+
console.log(chalk_1.default.bold(`Project: ${rootPath}`));
|
|
20
26
|
printProjectNeeds(report.projectNeeds, report.graphPresent, report.metaLanguages);
|
|
21
27
|
}
|
|
22
28
|
console.log('');
|
|
23
29
|
if (rootPath) {
|
|
24
30
|
if (report.readyForStrictCheck) {
|
|
25
|
-
console.log(
|
|
31
|
+
console.log(chalk_1.default.green('✓ Ready for `cxgrd check --strict`'));
|
|
26
32
|
}
|
|
27
33
|
else {
|
|
28
|
-
console.log(
|
|
29
|
-
console.log(
|
|
34
|
+
console.log(chalk_1.default.red('✗ Not ready for `cxgrd check --strict`'));
|
|
35
|
+
console.log(chalk_1.default.gray(' Fix the items below, then re-run doctor:\n'));
|
|
30
36
|
for (const blocker of report.blockers) {
|
|
31
|
-
console.log(
|
|
37
|
+
console.log(chalk_1.default.yellow(` • ${blocker}`));
|
|
32
38
|
}
|
|
33
39
|
}
|
|
34
40
|
}
|
|
35
41
|
else {
|
|
36
|
-
console.log(
|
|
42
|
+
console.log(chalk_1.default.gray(' Tip: run `cxgrd doctor <path>` to verify compiler tools for a specific project.'));
|
|
37
43
|
if (report.blockers.length > 0) {
|
|
38
|
-
console.log(
|
|
44
|
+
console.log(chalk_1.default.red('\n Blockers:'));
|
|
39
45
|
for (const blocker of report.blockers) {
|
|
40
|
-
console.log(
|
|
46
|
+
console.log(chalk_1.default.yellow(` • ${blocker}`));
|
|
41
47
|
}
|
|
42
48
|
}
|
|
43
49
|
}
|
|
44
50
|
console.log('');
|
|
45
|
-
console.log(
|
|
51
|
+
console.log(chalk_1.default.gray(' `cxgrd check` runs without --strict and may skip missing compilers silently.\n' +
|
|
46
52
|
' Use `cxgrd check --strict` in CI or pre-commit when you need guaranteed compiler coverage.'));
|
|
47
53
|
if (!report.readyForStrictCheck && (rootPath || report.blockers.some((b) => b.includes('Node')))) {
|
|
48
54
|
process.exit(1);
|
|
49
55
|
}
|
|
50
56
|
}
|
|
51
57
|
function printProjectNeeds(needs, graphPresent, metaLanguages) {
|
|
52
|
-
const graphIcon = graphPresent ?
|
|
53
|
-
console.log(` ${graphIcon} ${
|
|
58
|
+
const graphIcon = graphPresent ? chalk_1.default.green('✓') : chalk_1.default.red('✗');
|
|
59
|
+
console.log(` ${graphIcon} ${chalk_1.default.bold('.cg/graph.json')} ${graphPresent ? '' : chalk_1.default.red('(run cxgrd scan)')}`);
|
|
54
60
|
if (metaLanguages?.length) {
|
|
55
|
-
console.log(
|
|
61
|
+
console.log(chalk_1.default.gray(` Languages from last scan: ${metaLanguages.join(', ')}`));
|
|
56
62
|
}
|
|
57
63
|
printLangLine('TypeScript', needs.typescript.count, needs.typescript.paths, 'bundled with cxgrd');
|
|
58
64
|
printLangLine('Python', needs.python.count, needs.python.paths, 'requires Pyright on PATH');
|
|
@@ -60,17 +66,17 @@ function printProjectNeeds(needs, graphPresent, metaLanguages) {
|
|
|
60
66
|
if (needs.typescript.count === 0 &&
|
|
61
67
|
needs.python.count === 0 &&
|
|
62
68
|
needs.rust.count === 0) {
|
|
63
|
-
console.log(
|
|
69
|
+
console.log(chalk_1.default.gray(' No tsconfig / Python / Rust projects detected — structural checks still work after scan.'));
|
|
64
70
|
}
|
|
65
71
|
}
|
|
66
72
|
function printLangLine(label, count, paths, requirement) {
|
|
67
73
|
if (count === 0) {
|
|
68
|
-
console.log(
|
|
74
|
+
console.log(chalk_1.default.gray(` ${label}: none detected`));
|
|
69
75
|
return;
|
|
70
76
|
}
|
|
71
77
|
const sample = paths.slice(0, 3).join(', ');
|
|
72
78
|
const more = paths.length > 3 ? ` (+${paths.length - 3} more)` : '';
|
|
73
79
|
console.log(` ${label}: ${count} project(s) — ${sample}${more}`);
|
|
74
|
-
console.log(
|
|
80
|
+
console.log(chalk_1.default.gray(` ${requirement}`));
|
|
75
81
|
}
|
|
76
82
|
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Init Hooks Command
|
|
3
4
|
*
|
|
4
5
|
* Initializes cxgrd pre-commit hook integration
|
|
5
6
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.initHooksCommand = initHooksCommand;
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const git_hook_manager_1 = require("../utils/git-hook-manager");
|
|
11
|
+
const cli_formatter_1 = require("../utils/cli-formatter");
|
|
12
|
+
async function initHooksCommand(projectPath, options) {
|
|
13
|
+
const rootPath = (0, path_1.resolve)(projectPath || process.cwd());
|
|
14
|
+
cli_formatter_1.RichOutput.header('Pre-commit Hook Setup');
|
|
12
15
|
try {
|
|
13
|
-
const hookManager = new GitHookManager(rootPath);
|
|
16
|
+
const hookManager = new git_hook_manager_1.GitHookManager(rootPath);
|
|
14
17
|
const status = hookManager.getStatus();
|
|
15
18
|
if (options?.uninstall) {
|
|
16
|
-
RichOutput.info('Uninstalling cxgrd pre-commit hooks...');
|
|
19
|
+
cli_formatter_1.RichOutput.info('Uninstalling cxgrd pre-commit hooks...');
|
|
17
20
|
await hookManager.uninstallHooks();
|
|
18
|
-
RichOutput.success('Hooks uninstalled');
|
|
21
|
+
cli_formatter_1.RichOutput.success('Hooks uninstalled');
|
|
19
22
|
return;
|
|
20
23
|
}
|
|
21
24
|
if (status.installed && status.enabled && !options?.disable) {
|
|
22
|
-
RichOutput.info('Pre-commit hooks already installed and enabled.');
|
|
25
|
+
cli_formatter_1.RichOutput.info('Pre-commit hooks already installed and enabled.');
|
|
23
26
|
displayHookStatus(status);
|
|
24
27
|
return;
|
|
25
28
|
}
|
|
26
29
|
// Setup hooks
|
|
27
|
-
RichOutput.info('Setting up pre-commit hook...');
|
|
30
|
+
cli_formatter_1.RichOutput.info('Setting up pre-commit hook...');
|
|
28
31
|
const config = {
|
|
29
32
|
enabled: !options?.disable,
|
|
30
33
|
blockOnCritical: options?.blockCritical ?? true,
|
|
@@ -45,55 +48,55 @@ export async function initHooksCommand(projectPath, options) {
|
|
|
45
48
|
riskThreshold: options?.threshold ?? 70,
|
|
46
49
|
};
|
|
47
50
|
await hookManager.setupHooks(config);
|
|
48
|
-
RichOutput.blank();
|
|
49
|
-
RichOutput.success('Pre-commit hook installed successfully!');
|
|
50
|
-
RichOutput.blank();
|
|
51
|
-
RichOutput.section('Configuration');
|
|
52
|
-
console.log(CLIFormatter.stats({
|
|
51
|
+
cli_formatter_1.RichOutput.blank();
|
|
52
|
+
cli_formatter_1.RichOutput.success('Pre-commit hook installed successfully!');
|
|
53
|
+
cli_formatter_1.RichOutput.blank();
|
|
54
|
+
cli_formatter_1.RichOutput.section('Configuration');
|
|
55
|
+
console.log(cli_formatter_1.CLIFormatter.stats({
|
|
53
56
|
'Status': config.enabled ? '✓ Enabled' : '✗ Disabled',
|
|
54
57
|
'Block Critical': config.blockOnCritical ? 'Yes' : 'No',
|
|
55
58
|
'Block High': config.blockOnHigh ? 'Yes' : 'No',
|
|
56
59
|
'Warn Medium': config.warnOnMedium ? 'Yes' : 'No',
|
|
57
60
|
'Risk Threshold': `${config.riskThreshold}/100`,
|
|
58
61
|
}));
|
|
59
|
-
RichOutput.blank();
|
|
60
|
-
RichOutput.section('What This Does');
|
|
61
|
-
console.log(CLIFormatter.list([
|
|
62
|
+
cli_formatter_1.RichOutput.blank();
|
|
63
|
+
cli_formatter_1.RichOutput.section('What This Does');
|
|
64
|
+
console.log(cli_formatter_1.CLIFormatter.list([
|
|
62
65
|
{ icon: '🛡️ ', text: 'Prevents commits that break the architecture' },
|
|
63
66
|
{ icon: '⚠️ ', text: 'Warns about high-risk changes' },
|
|
64
67
|
{ icon: '🔍', text: 'Analyzes staged files for impact' },
|
|
65
68
|
{ icon: '📋', text: 'Generates fix suggestions' },
|
|
66
69
|
], 3));
|
|
67
|
-
RichOutput.blank();
|
|
68
|
-
RichOutput.section('How to Use');
|
|
69
|
-
console.log(CLIFormatter.list([
|
|
70
|
+
cli_formatter_1.RichOutput.blank();
|
|
71
|
+
cli_formatter_1.RichOutput.section('How to Use');
|
|
72
|
+
console.log(cli_formatter_1.CLIFormatter.list([
|
|
70
73
|
{ text: 'git add <files>' },
|
|
71
74
|
{ text: 'git commit -m "message"' },
|
|
72
75
|
{ text: '← Hook runs automatically' },
|
|
73
76
|
{ text: 'If blocking: fix issues or use --no-verify to skip' },
|
|
74
77
|
], 3));
|
|
75
|
-
RichOutput.blank();
|
|
76
|
-
RichOutput.tip('To bypass the hook: git commit --no-verify');
|
|
77
|
-
RichOutput.blank();
|
|
78
|
+
cli_formatter_1.RichOutput.blank();
|
|
79
|
+
cli_formatter_1.RichOutput.tip('To bypass the hook: git commit --no-verify');
|
|
80
|
+
cli_formatter_1.RichOutput.blank();
|
|
78
81
|
}
|
|
79
82
|
catch (err) {
|
|
80
|
-
RichOutput.error(err.message);
|
|
83
|
+
cli_formatter_1.RichOutput.error(err.message);
|
|
81
84
|
process.exit(1);
|
|
82
85
|
}
|
|
83
86
|
}
|
|
84
87
|
function displayHookStatus(status) {
|
|
85
|
-
RichOutput.blank();
|
|
86
|
-
RichOutput.section('Current Status');
|
|
88
|
+
cli_formatter_1.RichOutput.blank();
|
|
89
|
+
cli_formatter_1.RichOutput.section('Current Status');
|
|
87
90
|
if (status.config) {
|
|
88
|
-
console.log(CLIFormatter.stats({
|
|
91
|
+
console.log(cli_formatter_1.CLIFormatter.stats({
|
|
89
92
|
'Installed': status.installed ? '✓ Yes' : '✗ No',
|
|
90
93
|
'Enabled': status.config.enabled ? '✓ Yes' : '✗ No',
|
|
91
94
|
'Block Critical': status.config.blockOnCritical ? '✓ Yes' : '✗ No',
|
|
92
95
|
'Risk Threshold': `${status.config.riskThreshold}/100`,
|
|
93
96
|
}));
|
|
94
97
|
}
|
|
95
|
-
RichOutput.blank();
|
|
96
|
-
RichOutput.section('Next Steps');
|
|
98
|
+
cli_formatter_1.RichOutput.blank();
|
|
99
|
+
cli_formatter_1.RichOutput.section('Next Steps');
|
|
97
100
|
console.log(` 1. Make a change to your code`);
|
|
98
101
|
console.log(` 2. Stage the changes: git add <files>`);
|
|
99
102
|
console.log(` 3. Try to commit: git commit -m "your message"`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-hooks.js","sourceRoot":"","sources":["../../src/commands/init-hooks.ts"],"names":[],"mappings":"AAAA;;;;GAIG
|
|
1
|
+
{"version":3,"file":"init-hooks.js","sourceRoot":"","sources":["../../src/commands/init-hooks.ts"],"names":[],"mappings":"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"}
|