@hatem427/code-guard-ci 1.0.3 → 1.0.5
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/config/angular.config.ts +46 -0
- package/dist/config/angular.config.d.ts.map +1 -1
- package/dist/config/angular.config.js +36 -0
- package/dist/config/angular.config.js.map +1 -1
- package/dist/scripts/cli.js +101 -3
- package/dist/scripts/cli.js.map +1 -1
- package/dist/scripts/postinstall.d.ts +10 -0
- package/dist/scripts/postinstall.d.ts.map +1 -0
- package/dist/scripts/postinstall.js +41 -0
- package/dist/scripts/postinstall.js.map +1 -0
- package/package.json +125 -1
- package/scripts/cli.ts +108 -4
- package/scripts/postinstall.ts +40 -0
package/config/angular.config.ts
CHANGED
|
@@ -215,6 +215,52 @@ const angularRules: Rule[] = [
|
|
|
215
215
|
applicableTo: ['angular'],
|
|
216
216
|
category: 'Angular Signals',
|
|
217
217
|
},
|
|
218
|
+
|
|
219
|
+
// ── Dependency Injection ────────────────────────────────────────────────
|
|
220
|
+
|
|
221
|
+
{
|
|
222
|
+
id: 'angular-prefer-inject',
|
|
223
|
+
label: 'Use inject() instead of constructor injection',
|
|
224
|
+
description:
|
|
225
|
+
'Modern Angular (v14+) recommends using inject() function for dependency injection instead of constructor parameters. Example: private service = inject(MyService)',
|
|
226
|
+
severity: 'warning',
|
|
227
|
+
fileExtensions: ['ts'],
|
|
228
|
+
pattern: null,
|
|
229
|
+
customCheck: (file) => {
|
|
230
|
+
const violations: Array<{ line: number | null; message: string }> = [];
|
|
231
|
+
|
|
232
|
+
// Only check Angular component/directive/service files
|
|
233
|
+
if (
|
|
234
|
+
!file.content.includes('@Component') &&
|
|
235
|
+
!file.content.includes('@Directive') &&
|
|
236
|
+
!file.content.includes('@Injectable')
|
|
237
|
+
) {
|
|
238
|
+
return [];
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// Check for constructor with dependency injection parameters
|
|
242
|
+
// Matches: constructor(private service: Type) or constructor(public readonly http: HttpClient)
|
|
243
|
+
const constructorPattern = /constructor\s*\(\s*(?:private|public|protected|readonly|\s)+\w+\s*:\s*\w+/;
|
|
244
|
+
|
|
245
|
+
if (constructorPattern.test(file.content)) {
|
|
246
|
+
// Find the line number
|
|
247
|
+
for (let i = 0; i < file.lines.length; i++) {
|
|
248
|
+
if (constructorPattern.test(file.lines[i])) {
|
|
249
|
+
violations.push({
|
|
250
|
+
line: i + 1,
|
|
251
|
+
message:
|
|
252
|
+
'Constructor dependency injection found. Use inject() instead: private myService = inject(MyService);',
|
|
253
|
+
});
|
|
254
|
+
break;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
return violations;
|
|
260
|
+
},
|
|
261
|
+
applicableTo: ['angular'],
|
|
262
|
+
category: 'Angular Dependency Injection',
|
|
263
|
+
},
|
|
218
264
|
];
|
|
219
265
|
|
|
220
266
|
// Register all Angular-specific rules
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular.config.d.ts","sourceRoot":"","sources":["../../config/angular.config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAiB,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE1D,QAAA,MAAM,YAAY,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"angular.config.d.ts","sourceRoot":"","sources":["../../config/angular.config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAiB,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE1D,QAAA,MAAM,YAAY,EAAE,IAAI,EAyPvB,CAAC;AAKF,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -180,6 +180,42 @@ const angularRules = [
|
|
|
180
180
|
applicableTo: ['angular'],
|
|
181
181
|
category: 'Angular Signals',
|
|
182
182
|
},
|
|
183
|
+
// ── Dependency Injection ────────────────────────────────────────────────
|
|
184
|
+
{
|
|
185
|
+
id: 'angular-prefer-inject',
|
|
186
|
+
label: 'Use inject() instead of constructor injection',
|
|
187
|
+
description: 'Modern Angular (v14+) recommends using inject() function for dependency injection instead of constructor parameters. Example: private service = inject(MyService)',
|
|
188
|
+
severity: 'warning',
|
|
189
|
+
fileExtensions: ['ts'],
|
|
190
|
+
pattern: null,
|
|
191
|
+
customCheck: (file) => {
|
|
192
|
+
const violations = [];
|
|
193
|
+
// Only check Angular component/directive/service files
|
|
194
|
+
if (!file.content.includes('@Component') &&
|
|
195
|
+
!file.content.includes('@Directive') &&
|
|
196
|
+
!file.content.includes('@Injectable')) {
|
|
197
|
+
return [];
|
|
198
|
+
}
|
|
199
|
+
// Check for constructor with dependency injection parameters
|
|
200
|
+
// Matches: constructor(private service: Type) or constructor(public readonly http: HttpClient)
|
|
201
|
+
const constructorPattern = /constructor\s*\(\s*(?:private|public|protected|readonly|\s)+\w+\s*:\s*\w+/;
|
|
202
|
+
if (constructorPattern.test(file.content)) {
|
|
203
|
+
// Find the line number
|
|
204
|
+
for (let i = 0; i < file.lines.length; i++) {
|
|
205
|
+
if (constructorPattern.test(file.lines[i])) {
|
|
206
|
+
violations.push({
|
|
207
|
+
line: i + 1,
|
|
208
|
+
message: 'Constructor dependency injection found. Use inject() instead: private myService = inject(MyService);',
|
|
209
|
+
});
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return violations;
|
|
215
|
+
},
|
|
216
|
+
applicableTo: ['angular'],
|
|
217
|
+
category: 'Angular Dependency Injection',
|
|
218
|
+
},
|
|
183
219
|
];
|
|
184
220
|
exports.angularRules = angularRules;
|
|
185
221
|
// Register all Angular-specific rules
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular.config.js","sourceRoot":"","sources":["../../config/angular.config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular.config.js","sourceRoot":"","sources":["../../config/angular.config.ts"],"names":[],"mappings":"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"}
|
package/dist/scripts/cli.js
CHANGED
|
@@ -171,17 +171,115 @@ function initProject() {
|
|
|
171
171
|
packageJson.scripts['precommit-check'] = 'code-guard check';
|
|
172
172
|
packageJson.scripts['generate-doc'] = 'code-guard doc';
|
|
173
173
|
packageJson.scripts['generate-pr-checklist'] = 'code-guard checklist';
|
|
174
|
+
packageJson.scripts['prepare'] = 'husky';
|
|
175
|
+
// Add optional scripts (they'll use ts-node if code-guard commands aren't available)
|
|
176
|
+
const packageName = '@hatem427/code-guard-ci'; // Your package name
|
|
177
|
+
packageJson.scripts['set-bypass-password'] = `npx ts-node node_modules/${packageName}/scripts/set-bypass-password.ts`;
|
|
178
|
+
packageJson.scripts['set-admin-password'] = `npx ts-node node_modules/${packageName}/scripts/set-admin-password.ts`;
|
|
179
|
+
packageJson.scripts['delete-bypass-logs'] = `npx ts-node node_modules/${packageName}/scripts/delete-bypass-logs.ts`;
|
|
180
|
+
packageJson.scripts['view-bypass-log'] = `npx ts-node node_modules/${packageName}/scripts/view-bypass-log.ts`;
|
|
181
|
+
packageJson.scripts['auto-fix'] = `npx ts-node node_modules/${packageName}/scripts/auto-fix.ts`;
|
|
174
182
|
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n');
|
|
175
183
|
console.log(' ✓ Added npm scripts');
|
|
176
184
|
// Setup Husky
|
|
177
185
|
console.log('\n🐶 Setting up Husky...');
|
|
178
186
|
try {
|
|
179
|
-
|
|
180
|
-
|
|
187
|
+
// First, try modern husky init
|
|
188
|
+
try {
|
|
189
|
+
(0, child_process_1.execSync)('npx husky init', { stdio: 'pipe', cwd });
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// Fallback to manual setup
|
|
193
|
+
const huskyDir = path.join(cwd, '.husky');
|
|
194
|
+
const huskyUnderscoreDir = path.join(huskyDir, '_');
|
|
195
|
+
if (!fs.existsSync(huskyDir)) {
|
|
196
|
+
fs.mkdirSync(huskyDir, { recursive: true });
|
|
197
|
+
}
|
|
198
|
+
if (!fs.existsSync(huskyUnderscoreDir)) {
|
|
199
|
+
fs.mkdirSync(huskyUnderscoreDir, { recursive: true });
|
|
200
|
+
}
|
|
201
|
+
// Create husky.sh
|
|
202
|
+
const huskyShContent = `#!/usr/bin/env sh
|
|
203
|
+
if [ -z "$husky_skip_init" ]; then
|
|
204
|
+
debug () {
|
|
205
|
+
if [ "$HUSKY_DEBUG" = "1" ]; then
|
|
206
|
+
echo "husky (debug) - $1"
|
|
207
|
+
fi
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
readonly hook_name="$(basename -- "$0")"
|
|
211
|
+
debug "starting $hook_name..."
|
|
212
|
+
|
|
213
|
+
if [ "$HUSKY" = "0" ]; then
|
|
214
|
+
debug "HUSKY env variable is set to 0, skipping hook"
|
|
215
|
+
exit 0
|
|
216
|
+
fi
|
|
217
|
+
|
|
218
|
+
if [ -f ~/.huskyrc ]; then
|
|
219
|
+
debug "sourcing ~/.huskyrc"
|
|
220
|
+
. ~/.huskyrc
|
|
221
|
+
fi
|
|
222
|
+
|
|
223
|
+
readonly husky_skip_init=1
|
|
224
|
+
export husky_skip_init
|
|
225
|
+
sh -e "$0" "$@"
|
|
226
|
+
exitCode="$?"
|
|
227
|
+
|
|
228
|
+
if [ $exitCode != 0 ]; then
|
|
229
|
+
echo "husky - $hook_name hook exited with code $exitCode (error)"
|
|
230
|
+
fi
|
|
231
|
+
|
|
232
|
+
if [ $exitCode = 127 ]; then
|
|
233
|
+
echo "husky - command not found in PATH=$PATH"
|
|
234
|
+
fi
|
|
235
|
+
|
|
236
|
+
exit $exitCode
|
|
237
|
+
fi
|
|
238
|
+
`;
|
|
239
|
+
fs.writeFileSync(path.join(huskyUnderscoreDir, 'husky.sh'), huskyShContent);
|
|
240
|
+
fs.chmodSync(path.join(huskyUnderscoreDir, 'husky.sh'), '755');
|
|
241
|
+
}
|
|
242
|
+
// Create pre-commit hook
|
|
243
|
+
const preCommitHook = `#!/usr/bin/env sh
|
|
244
|
+
# ============================================================================
|
|
245
|
+
# Husky pre-commit hook
|
|
246
|
+
# ============================================================================
|
|
247
|
+
#
|
|
248
|
+
# This hook runs automatically before every commit. It:
|
|
249
|
+
# 1. Executes the Code Guardian pre-commit checks
|
|
250
|
+
# 2. Blocks the commit if errors are found
|
|
251
|
+
#
|
|
252
|
+
# Bypass methods:
|
|
253
|
+
# - Add #bypass-rules to your commit message
|
|
254
|
+
# - Run: BYPASS_RULES=true git commit -m "message"
|
|
255
|
+
#
|
|
256
|
+
# To skip this hook entirely (git native):
|
|
257
|
+
# git commit --no-verify
|
|
258
|
+
# ============================================================================
|
|
259
|
+
|
|
260
|
+
. "$(dirname -- "$0")/_/husky.sh"
|
|
261
|
+
|
|
262
|
+
echo "🛡️ Running Code Guardian pre-commit checks..."
|
|
263
|
+
|
|
264
|
+
# Run the TypeScript pre-commit check script via npm
|
|
265
|
+
npm run precommit-check
|
|
266
|
+
|
|
267
|
+
# Exit with the same code as the check script
|
|
268
|
+
# (0 = pass, 1 = blocked)
|
|
269
|
+
exit $?
|
|
270
|
+
`;
|
|
271
|
+
const huskyDir = path.join(cwd, '.husky');
|
|
272
|
+
const preCommitPath = path.join(huskyDir, 'pre-commit');
|
|
273
|
+
fs.writeFileSync(preCommitPath, preCommitHook);
|
|
274
|
+
fs.chmodSync(preCommitPath, '755');
|
|
275
|
+
console.log(' ✓ Created .husky/pre-commit hook');
|
|
181
276
|
console.log(' ✓ Husky configured');
|
|
182
277
|
}
|
|
183
278
|
catch (error) {
|
|
184
|
-
console.warn(' ⚠️ Husky setup failed
|
|
279
|
+
console.warn(' ⚠️ Husky setup failed:', error.message);
|
|
280
|
+
console.warn(' You may need to set it up manually:');
|
|
281
|
+
console.warn(' 1. Run: npx husky init');
|
|
282
|
+
console.warn(' 2. Create .husky/pre-commit with the hook content');
|
|
185
283
|
}
|
|
186
284
|
console.log('\n✅ Code Guardian initialized successfully!\n');
|
|
187
285
|
console.log('Next steps:');
|
package/dist/scripts/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../scripts/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../scripts/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* ============================================================================
|
|
4
|
+
* postinstall.ts — Optional post-install setup
|
|
5
|
+
* ============================================================================
|
|
6
|
+
*
|
|
7
|
+
* This script runs after npm install to provide setup instructions.
|
|
8
|
+
* It does NOT automatically modify the user's project.
|
|
9
|
+
*/
|
|
10
|
+
//# sourceMappingURL=postinstall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postinstall.d.ts","sourceRoot":"","sources":["../../scripts/postinstall.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* ============================================================================
|
|
5
|
+
* postinstall.ts — Optional post-install setup
|
|
6
|
+
* ============================================================================
|
|
7
|
+
*
|
|
8
|
+
* This script runs after npm install to provide setup instructions.
|
|
9
|
+
* It does NOT automatically modify the user's project.
|
|
10
|
+
*/
|
|
11
|
+
console.log(`
|
|
12
|
+
╔════════════════════════════════════════════════════════════╗
|
|
13
|
+
║ ║
|
|
14
|
+
║ 🛡️ Code Guardian installed successfully! ║
|
|
15
|
+
║ ║
|
|
16
|
+
╚════════════════════════════════════════════════════════════╝
|
|
17
|
+
|
|
18
|
+
📚 Quick Start:
|
|
19
|
+
|
|
20
|
+
1. Initialize in your project:
|
|
21
|
+
|
|
22
|
+
npx code-guard init
|
|
23
|
+
|
|
24
|
+
2. This will:
|
|
25
|
+
✓ Create .husky/pre-commit hook
|
|
26
|
+
✓ Add npm scripts to package.json
|
|
27
|
+
✓ Copy config files and templates
|
|
28
|
+
✓ Create docs directory
|
|
29
|
+
|
|
30
|
+
3. Test it:
|
|
31
|
+
|
|
32
|
+
git commit -m "test"
|
|
33
|
+
|
|
34
|
+
📖 Documentation:
|
|
35
|
+
https://github.com/hatem427/code-guard-ci
|
|
36
|
+
|
|
37
|
+
🆘 Need help?
|
|
38
|
+
Run: code-guard help
|
|
39
|
+
|
|
40
|
+
`);
|
|
41
|
+
//# sourceMappingURL=postinstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postinstall.js","sourceRoot":"","sources":["../../scripts/postinstall.ts"],"names":[],"mappings":";;AACA;;;;;;;GAOG;AAEH,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BX,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hatem427/code-guard-ci",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "Production-ready TypeScript tooling to enforce PR & coding guidelines for Angular, React, and NextJS projects.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"main": "dist/scripts/cli.js",
|
|
@@ -70,5 +70,129 @@
|
|
|
70
70
|
},
|
|
71
71
|
"engines": {
|
|
72
72
|
"node": ">=18.0.0"
|
|
73
|
+
},
|
|
74
|
+
"directories": {
|
|
75
|
+
"doc": "docs"
|
|
76
|
+
},
|
|
77
|
+
"dependencies": {
|
|
78
|
+
"acorn": "^8.15.0",
|
|
79
|
+
"acorn-jsx": "^5.3.2",
|
|
80
|
+
"acorn-walk": "^8.3.4",
|
|
81
|
+
"ajv": "^6.12.6",
|
|
82
|
+
"ansi-regex": "^5.0.1",
|
|
83
|
+
"ansi-styles": "^4.3.0",
|
|
84
|
+
"arg": "^4.1.3",
|
|
85
|
+
"argparse": "^2.0.1",
|
|
86
|
+
"balanced-match": "^1.0.2",
|
|
87
|
+
"brace-expansion": "^1.1.12",
|
|
88
|
+
"braces": "^3.0.3",
|
|
89
|
+
"callsites": "^3.1.0",
|
|
90
|
+
"code-block-writer": "^12.0.0",
|
|
91
|
+
"color-convert": "^2.0.1",
|
|
92
|
+
"color-name": "^1.1.4",
|
|
93
|
+
"concat-map": "^0.0.1",
|
|
94
|
+
"create-require": "^1.1.1",
|
|
95
|
+
"cross-spawn": "^7.0.6",
|
|
96
|
+
"debug": "^4.4.3",
|
|
97
|
+
"deep-is": "^0.1.4",
|
|
98
|
+
"diff": "^4.0.4",
|
|
99
|
+
"doctrine": "^3.0.0",
|
|
100
|
+
"eastasianwidth": "^0.2.0",
|
|
101
|
+
"emoji-regex": "^9.2.2",
|
|
102
|
+
"escape-string-regexp": "^4.0.0",
|
|
103
|
+
"eslint-scope": "^7.2.2",
|
|
104
|
+
"eslint-visitor-keys": "^3.4.3",
|
|
105
|
+
"espree": "^9.6.1",
|
|
106
|
+
"esquery": "^1.7.0",
|
|
107
|
+
"esrecurse": "^4.3.0",
|
|
108
|
+
"estraverse": "^5.3.0",
|
|
109
|
+
"esutils": "^2.0.3",
|
|
110
|
+
"fast-deep-equal": "^3.1.3",
|
|
111
|
+
"fast-glob": "^3.3.3",
|
|
112
|
+
"fast-json-stable-stringify": "^2.1.0",
|
|
113
|
+
"fast-levenshtein": "^2.0.6",
|
|
114
|
+
"fastq": "^1.20.1",
|
|
115
|
+
"file-entry-cache": "^6.0.1",
|
|
116
|
+
"fill-range": "^7.1.1",
|
|
117
|
+
"find-up": "^5.0.0",
|
|
118
|
+
"flat-cache": "^3.2.0",
|
|
119
|
+
"flatted": "^3.3.3",
|
|
120
|
+
"foreground-child": "^3.3.1",
|
|
121
|
+
"fs.realpath": "^1.0.0",
|
|
122
|
+
"glob-parent": "^6.0.2",
|
|
123
|
+
"globals": "^13.24.0",
|
|
124
|
+
"graphemer": "^1.4.0",
|
|
125
|
+
"has-flag": "^4.0.0",
|
|
126
|
+
"ignore": "^5.3.2",
|
|
127
|
+
"import-fresh": "^3.3.1",
|
|
128
|
+
"imurmurhash": "^0.1.4",
|
|
129
|
+
"inflight": "^1.0.6",
|
|
130
|
+
"inherits": "^2.0.4",
|
|
131
|
+
"is-extglob": "^2.1.1",
|
|
132
|
+
"is-fullwidth-code-point": "^3.0.0",
|
|
133
|
+
"is-glob": "^4.0.3",
|
|
134
|
+
"is-number": "^7.0.0",
|
|
135
|
+
"is-path-inside": "^3.0.3",
|
|
136
|
+
"isexe": "^2.0.0",
|
|
137
|
+
"jackspeak": "^3.4.3",
|
|
138
|
+
"js-yaml": "^4.1.1",
|
|
139
|
+
"json-buffer": "^3.0.1",
|
|
140
|
+
"json-schema-traverse": "^0.4.1",
|
|
141
|
+
"json-stable-stringify-without-jsonify": "^1.0.1",
|
|
142
|
+
"keyv": "^4.5.4",
|
|
143
|
+
"levn": "^0.4.1",
|
|
144
|
+
"locate-path": "^6.0.0",
|
|
145
|
+
"lodash.merge": "^4.6.2",
|
|
146
|
+
"lru-cache": "^10.4.3",
|
|
147
|
+
"make-error": "^1.3.6",
|
|
148
|
+
"merge2": "^1.4.1",
|
|
149
|
+
"micromatch": "^4.0.8",
|
|
150
|
+
"minimatch": "^3.1.2",
|
|
151
|
+
"minipass": "^7.1.2",
|
|
152
|
+
"mkdirp": "^3.0.1",
|
|
153
|
+
"ms": "^2.1.3",
|
|
154
|
+
"natural-compare": "^1.4.0",
|
|
155
|
+
"once": "^1.4.0",
|
|
156
|
+
"optionator": "^0.9.4",
|
|
157
|
+
"p-limit": "^3.1.0",
|
|
158
|
+
"p-locate": "^5.0.0",
|
|
159
|
+
"package-json-from-dist": "^1.0.1",
|
|
160
|
+
"parent-module": "^1.0.1",
|
|
161
|
+
"path-browserify": "^1.0.1",
|
|
162
|
+
"path-exists": "^4.0.0",
|
|
163
|
+
"path-is-absolute": "^1.0.1",
|
|
164
|
+
"path-key": "^3.1.1",
|
|
165
|
+
"path-scurry": "^1.11.1",
|
|
166
|
+
"picomatch": "^2.3.1",
|
|
167
|
+
"prelude-ls": "^1.2.1",
|
|
168
|
+
"punycode": "^2.3.1",
|
|
169
|
+
"queue-microtask": "^1.2.3",
|
|
170
|
+
"resolve-from": "^4.0.0",
|
|
171
|
+
"reusify": "^1.1.0",
|
|
172
|
+
"rimraf": "^3.0.2",
|
|
173
|
+
"run-parallel": "^1.2.0",
|
|
174
|
+
"shebang-command": "^2.0.0",
|
|
175
|
+
"shebang-regex": "^3.0.0",
|
|
176
|
+
"signal-exit": "^4.1.0",
|
|
177
|
+
"string-width": "^5.1.2",
|
|
178
|
+
"string-width-cjs": "^4.2.3",
|
|
179
|
+
"strip-ansi": "^6.0.1",
|
|
180
|
+
"strip-ansi-cjs": "^6.0.1",
|
|
181
|
+
"strip-json-comments": "^3.1.1",
|
|
182
|
+
"supports-color": "^7.2.0",
|
|
183
|
+
"text-table": "^0.2.0",
|
|
184
|
+
"to-regex-range": "^5.0.1",
|
|
185
|
+
"type-check": "^0.4.0",
|
|
186
|
+
"type-fest": "^0.20.2",
|
|
187
|
+
"undici-types": "^6.21.0",
|
|
188
|
+
"uri-js": "^4.4.1",
|
|
189
|
+
"v8-compile-cache-lib": "^3.0.1",
|
|
190
|
+
"which": "^2.0.2",
|
|
191
|
+
"word-wrap": "^1.2.5",
|
|
192
|
+
"wrap-ansi": "^8.1.0",
|
|
193
|
+
"wrap-ansi-cjs": "^7.0.0",
|
|
194
|
+
"wrappy": "^1.0.2",
|
|
195
|
+
"yn": "^3.1.1",
|
|
196
|
+
"yocto-queue": "^0.1.0"
|
|
73
197
|
}
|
|
74
198
|
}
|
package/scripts/cli.ts
CHANGED
|
@@ -158,6 +158,15 @@ function initProject(): void {
|
|
|
158
158
|
packageJson.scripts['precommit-check'] = 'code-guard check';
|
|
159
159
|
packageJson.scripts['generate-doc'] = 'code-guard doc';
|
|
160
160
|
packageJson.scripts['generate-pr-checklist'] = 'code-guard checklist';
|
|
161
|
+
packageJson.scripts['prepare'] = 'husky';
|
|
162
|
+
|
|
163
|
+
// Add optional scripts (they'll use ts-node if code-guard commands aren't available)
|
|
164
|
+
const packageName = '@hatem427/code-guard-ci'; // Your package name
|
|
165
|
+
packageJson.scripts['set-bypass-password'] = `npx ts-node node_modules/${packageName}/scripts/set-bypass-password.ts`;
|
|
166
|
+
packageJson.scripts['set-admin-password'] = `npx ts-node node_modules/${packageName}/scripts/set-admin-password.ts`;
|
|
167
|
+
packageJson.scripts['delete-bypass-logs'] = `npx ts-node node_modules/${packageName}/scripts/delete-bypass-logs.ts`;
|
|
168
|
+
packageJson.scripts['view-bypass-log'] = `npx ts-node node_modules/${packageName}/scripts/view-bypass-log.ts`;
|
|
169
|
+
packageJson.scripts['auto-fix'] = `npx ts-node node_modules/${packageName}/scripts/auto-fix.ts`;
|
|
161
170
|
|
|
162
171
|
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n');
|
|
163
172
|
console.log(' ✓ Added npm scripts');
|
|
@@ -165,11 +174,106 @@ function initProject(): void {
|
|
|
165
174
|
// Setup Husky
|
|
166
175
|
console.log('\n🐶 Setting up Husky...');
|
|
167
176
|
try {
|
|
168
|
-
|
|
169
|
-
|
|
177
|
+
// First, try modern husky init
|
|
178
|
+
try {
|
|
179
|
+
execSync('npx husky init', { stdio: 'pipe', cwd });
|
|
180
|
+
} catch {
|
|
181
|
+
// Fallback to manual setup
|
|
182
|
+
const huskyDir = path.join(cwd, '.husky');
|
|
183
|
+
const huskyUnderscoreDir = path.join(huskyDir, '_');
|
|
184
|
+
|
|
185
|
+
if (!fs.existsSync(huskyDir)) {
|
|
186
|
+
fs.mkdirSync(huskyDir, { recursive: true });
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if (!fs.existsSync(huskyUnderscoreDir)) {
|
|
190
|
+
fs.mkdirSync(huskyUnderscoreDir, { recursive: true });
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// Create husky.sh
|
|
194
|
+
const huskyShContent = `#!/usr/bin/env sh
|
|
195
|
+
if [ -z "$husky_skip_init" ]; then
|
|
196
|
+
debug () {
|
|
197
|
+
if [ "$HUSKY_DEBUG" = "1" ]; then
|
|
198
|
+
echo "husky (debug) - $1"
|
|
199
|
+
fi
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
readonly hook_name="$(basename -- "$0")"
|
|
203
|
+
debug "starting $hook_name..."
|
|
204
|
+
|
|
205
|
+
if [ "$HUSKY" = "0" ]; then
|
|
206
|
+
debug "HUSKY env variable is set to 0, skipping hook"
|
|
207
|
+
exit 0
|
|
208
|
+
fi
|
|
209
|
+
|
|
210
|
+
if [ -f ~/.huskyrc ]; then
|
|
211
|
+
debug "sourcing ~/.huskyrc"
|
|
212
|
+
. ~/.huskyrc
|
|
213
|
+
fi
|
|
214
|
+
|
|
215
|
+
readonly husky_skip_init=1
|
|
216
|
+
export husky_skip_init
|
|
217
|
+
sh -e "$0" "$@"
|
|
218
|
+
exitCode="$?"
|
|
219
|
+
|
|
220
|
+
if [ $exitCode != 0 ]; then
|
|
221
|
+
echo "husky - $hook_name hook exited with code $exitCode (error)"
|
|
222
|
+
fi
|
|
223
|
+
|
|
224
|
+
if [ $exitCode = 127 ]; then
|
|
225
|
+
echo "husky - command not found in PATH=$PATH"
|
|
226
|
+
fi
|
|
227
|
+
|
|
228
|
+
exit $exitCode
|
|
229
|
+
fi
|
|
230
|
+
`;
|
|
231
|
+
fs.writeFileSync(path.join(huskyUnderscoreDir, 'husky.sh'), huskyShContent);
|
|
232
|
+
fs.chmodSync(path.join(huskyUnderscoreDir, 'husky.sh'), '755');
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// Create pre-commit hook
|
|
236
|
+
const preCommitHook = `#!/usr/bin/env sh
|
|
237
|
+
# ============================================================================
|
|
238
|
+
# Husky pre-commit hook
|
|
239
|
+
# ============================================================================
|
|
240
|
+
#
|
|
241
|
+
# This hook runs automatically before every commit. It:
|
|
242
|
+
# 1. Executes the Code Guardian pre-commit checks
|
|
243
|
+
# 2. Blocks the commit if errors are found
|
|
244
|
+
#
|
|
245
|
+
# Bypass methods:
|
|
246
|
+
# - Add #bypass-rules to your commit message
|
|
247
|
+
# - Run: BYPASS_RULES=true git commit -m "message"
|
|
248
|
+
#
|
|
249
|
+
# To skip this hook entirely (git native):
|
|
250
|
+
# git commit --no-verify
|
|
251
|
+
# ============================================================================
|
|
252
|
+
|
|
253
|
+
. "$(dirname -- "$0")/_/husky.sh"
|
|
254
|
+
|
|
255
|
+
echo "🛡️ Running Code Guardian pre-commit checks..."
|
|
256
|
+
|
|
257
|
+
# Run the TypeScript pre-commit check script via npm
|
|
258
|
+
npm run precommit-check
|
|
259
|
+
|
|
260
|
+
# Exit with the same code as the check script
|
|
261
|
+
# (0 = pass, 1 = blocked)
|
|
262
|
+
exit $?
|
|
263
|
+
`;
|
|
264
|
+
|
|
265
|
+
const huskyDir = path.join(cwd, '.husky');
|
|
266
|
+
const preCommitPath = path.join(huskyDir, 'pre-commit');
|
|
267
|
+
fs.writeFileSync(preCommitPath, preCommitHook);
|
|
268
|
+
fs.chmodSync(preCommitPath, '755');
|
|
269
|
+
|
|
270
|
+
console.log(' ✓ Created .husky/pre-commit hook');
|
|
170
271
|
console.log(' ✓ Husky configured');
|
|
171
|
-
} catch (error) {
|
|
172
|
-
console.warn(' ⚠️ Husky setup failed
|
|
272
|
+
} catch (error: any) {
|
|
273
|
+
console.warn(' ⚠️ Husky setup failed:', error.message);
|
|
274
|
+
console.warn(' You may need to set it up manually:');
|
|
275
|
+
console.warn(' 1. Run: npx husky init');
|
|
276
|
+
console.warn(' 2. Create .husky/pre-commit with the hook content');
|
|
173
277
|
}
|
|
174
278
|
|
|
175
279
|
console.log('\n✅ Code Guardian initialized successfully!\n');
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* ============================================================================
|
|
4
|
+
* postinstall.ts — Optional post-install setup
|
|
5
|
+
* ============================================================================
|
|
6
|
+
*
|
|
7
|
+
* This script runs after npm install to provide setup instructions.
|
|
8
|
+
* It does NOT automatically modify the user's project.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
console.log(`
|
|
12
|
+
╔════════════════════════════════════════════════════════════╗
|
|
13
|
+
║ ║
|
|
14
|
+
║ 🛡️ Code Guardian installed successfully! ║
|
|
15
|
+
║ ║
|
|
16
|
+
╚════════════════════════════════════════════════════════════╝
|
|
17
|
+
|
|
18
|
+
📚 Quick Start:
|
|
19
|
+
|
|
20
|
+
1. Initialize in your project:
|
|
21
|
+
|
|
22
|
+
npx code-guard init
|
|
23
|
+
|
|
24
|
+
2. This will:
|
|
25
|
+
✓ Create .husky/pre-commit hook
|
|
26
|
+
✓ Add npm scripts to package.json
|
|
27
|
+
✓ Copy config files and templates
|
|
28
|
+
✓ Create docs directory
|
|
29
|
+
|
|
30
|
+
3. Test it:
|
|
31
|
+
|
|
32
|
+
git commit -m "test"
|
|
33
|
+
|
|
34
|
+
📖 Documentation:
|
|
35
|
+
https://github.com/hatem427/code-guard-ci
|
|
36
|
+
|
|
37
|
+
🆘 Need help?
|
|
38
|
+
Run: code-guard help
|
|
39
|
+
|
|
40
|
+
`);
|