Add husky pre-commit hook for formatting and type checking

This commit is contained in:
Mario Zechner 2025-08-11 21:15:37 +02:00
parent e21a46e68f
commit 42bf7b4ae0
3 changed files with 94 additions and 46 deletions

21
.husky/pre-commit Executable file
View file

@ -0,0 +1,21 @@
#!/bin/sh
# Get list of staged files before running check
STAGED_FILES=$(git diff --cached --name-only)
# Run the check script (formatting, linting, and type checking)
echo "Running formatting, linting, and type checking..."
npm run check
if [ $? -ne 0 ]; then
echo "❌ Checks failed. Please fix the errors before committing."
exit 1
fi
# Restage files that were previously staged and may have been modified by formatting
for file in $STAGED_FILES; do
if [ -f "$file" ]; then
git add "$file"
fi
done
echo "✅ All pre-commit checks passed!"

115
package-lock.json generated
View file

@ -11,6 +11,7 @@
"devDependencies": {
"@biomejs/biome": "^2.1.4",
"@types/node": "^22.10.5",
"husky": "^9.1.7",
"tsx": "^4.20.3",
"typescript": "^5.9.2"
},
@ -658,6 +659,30 @@
"dev": true,
"license": "MIT"
},
"node_modules/ansi-regex": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
"integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"node_modules/ansi-styles": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/chalk": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.5.0.tgz",
@ -740,6 +765,22 @@
"url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
}
},
"node_modules/husky": {
"version": "9.1.7",
"resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz",
"integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==",
"dev": true,
"license": "MIT",
"bin": {
"husky": "bin.js"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/typicode"
}
},
"node_modules/resolve-pkg-maps": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
@ -750,6 +791,33 @@
"url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
}
},
"node_modules/signal-exit": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"license": "ISC",
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/strip-ansi": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
"license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/tsx": {
"version": "4.20.3",
"resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz",
@ -795,7 +863,7 @@
"version": "0.5.8",
"license": "MIT",
"dependencies": {
"@mariozechner/pi-tui": "^0.5.7",
"@mariozechner/pi-tui": "^0.5.8",
"@types/glob": "^8.1.0",
"chalk": "^5.5.0",
"glob": "^11.0.3",
@ -853,26 +921,6 @@
"version": "5.1.2",
"license": "MIT"
},
"packages/agent/node_modules/ansi-regex": {
"version": "6.1.0",
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"packages/agent/node_modules/ansi-styles": {
"version": "6.2.1",
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"packages/agent/node_modules/color-convert": {
"version": "2.0.1",
"license": "MIT",
@ -1054,16 +1102,6 @@
"node": ">=8"
}
},
"packages/agent/node_modules/signal-exit": {
"version": "4.1.0",
"license": "ISC",
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"packages/agent/node_modules/string-width": {
"version": "5.1.2",
"license": "MIT",
@ -1113,19 +1151,6 @@
"node": ">=8"
}
},
"packages/agent/node_modules/strip-ansi": {
"version": "7.1.0",
"license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"packages/agent/node_modules/strip-ansi-cjs": {
"name": "strip-ansi",
"version": "6.0.1",
@ -1239,7 +1264,7 @@
"version": "0.5.8",
"license": "MIT",
"dependencies": {
"@mariozechner/pi-agent": "^0.5.7",
"@mariozechner/pi-agent": "^0.5.8",
"chalk": "^5.5.0"
},
"bin": {

View file

@ -16,11 +16,13 @@
"version:set": "npm version -ws",
"prepublish": "npm run clean && npm run build && npm run check",
"publish": "npm run prepublish && npm publish -ws --access public",
"publish:dry": "npm run prepublish && npm publish -ws --access public --dry-run"
"publish:dry": "npm run prepublish && npm publish -ws --access public --dry-run",
"prepare": "husky"
},
"devDependencies": {
"@biomejs/biome": "^2.1.4",
"@types/node": "^22.10.5",
"husky": "^9.1.7",
"tsx": "^4.20.3",
"typescript": "^5.9.2"
},