@hatem427/code-guard-ci 1.0.4 ā 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/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/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
|
+
`);
|