Nitishkumar-ai's picture
Deployment Build (Final): Professional Structure + Blog
95cbc5b
import os
import stat
import sys
from pathlib import Path
PRE_COMMIT_SCRIPT = """#!/bin/sh
# CommitGuard pre-commit hook
echo "Running CommitGuard scan on staged changes..."
commitguard scan --staged --format text --fail-on-vulnerable
if [ $? -ne 0 ]; then
echo "CommitGuard found vulnerabilities! Commit aborted."
exit 1
fi
"""
PRE_PUSH_SCRIPT = """#!/bin/sh
# CommitGuard pre-push hook
echo "Running CommitGuard scan on commits to be pushed..."
while read local_ref local_sha remote_ref remote_sha
do
if [ "$local_sha" != "0000000000000000000000000000000000000000" ]; then
git diff "$remote_sha" "$local_sha" | commitguard scan --diff - --format text --fail-on-vulnerable
if [ $? -ne 0 ]; then
echo "CommitGuard found vulnerabilities in $local_sha! Push aborted."
exit 1
fi
fi
done
"""
def install_hook(hook_type: str):
git_dir = Path(".git")
if not git_dir.exists() or not git_dir.is_dir():
print("Error: .git directory not found. Please run this command from the root of a git repository.")
sys.exit(1)
hooks_dir = git_dir / "hooks"
hooks_dir.mkdir(exist_ok=True)
hook_path = hooks_dir / hook_type
script_content = PRE_COMMIT_SCRIPT if hook_type == "pre-commit" else PRE_PUSH_SCRIPT
with open(hook_path, "w", encoding="utf-8") as f:
f.write(script_content)
# Make it executable
st = os.stat(hook_path)
os.chmod(hook_path, st.st_mode | stat.S_IEXEC)
print(f"Successfully installed {hook_type} hook at {hook_path}")