mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-07-04 19:21:51 +00:00
f2e6a3264d
Co-authored-by: Pablo F.G <pablo.fernandez@prowler.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
110 lines
2.4 KiB
JavaScript
Executable File
110 lines
2.4 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
/**
|
|
* Setup Git Hooks for Prowler UI
|
|
*
|
|
* This script checks if prek is managing git hooks.
|
|
* If not, it runs the repository's setup script to install prek.
|
|
*/
|
|
|
|
const { execSync } = require("child_process");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
/**
|
|
* Check if prek framework is managing git hooks
|
|
*/
|
|
function isPrekInstalled(gitRoot) {
|
|
const hookPath = path.join(gitRoot, ".git", "hooks", "pre-commit");
|
|
|
|
try {
|
|
if (!fs.existsSync(hookPath)) return false;
|
|
|
|
const content = fs.readFileSync(hookPath, "utf8");
|
|
return (
|
|
content.includes("prek") ||
|
|
content.includes("pre-commit") ||
|
|
content.includes("INSTALL_PYTHON")
|
|
);
|
|
} catch {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get git repository root directory
|
|
*/
|
|
function getGitRoot() {
|
|
try {
|
|
return execSync("git rev-parse --show-toplevel", {
|
|
encoding: "utf8",
|
|
stdio: ["pipe", "pipe", "pipe"],
|
|
}).trim();
|
|
} catch {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Run the repository setup script
|
|
*/
|
|
function runSetupScript(gitRoot) {
|
|
const setupScript = path.join(gitRoot, "scripts", "setup-git-hooks.sh");
|
|
|
|
if (!fs.existsSync(setupScript)) {
|
|
throw new Error("Setup script not found");
|
|
}
|
|
|
|
execSync(`bash "${setupScript}"`, {
|
|
cwd: gitRoot,
|
|
stdio: "inherit",
|
|
});
|
|
}
|
|
|
|
// Main execution
|
|
|
|
// Skip in Docker/CI environments
|
|
if (
|
|
process.env.DOCKER ||
|
|
process.env.CI ||
|
|
process.env.KUBERNETES_SERVICE_HOST
|
|
) {
|
|
console.log(
|
|
"⚠️ Running in containerized environment. Skipping git hooks setup.",
|
|
);
|
|
process.exit(0);
|
|
}
|
|
|
|
const gitRoot = getGitRoot();
|
|
|
|
if (!gitRoot) {
|
|
console.log("⚠️ Not in a git repository. Skipping git hooks setup.");
|
|
process.exit(0);
|
|
}
|
|
|
|
if (isPrekInstalled(gitRoot)) {
|
|
console.log("✅ Git hooks managed by prek framework");
|
|
console.log(" UI hooks will be called automatically for UI files");
|
|
process.exit(0);
|
|
}
|
|
|
|
// Prek not installed - set it up
|
|
console.log("⚠️ Prek hooks not installed");
|
|
console.log("📦 Installing prek hooks...");
|
|
console.log("");
|
|
|
|
try {
|
|
runSetupScript(gitRoot);
|
|
console.log("");
|
|
console.log("✅ Prek hooks installed successfully");
|
|
} catch (error) {
|
|
console.error("❌ Failed to setup git hooks");
|
|
console.error(
|
|
" Please run manually from repo root: ./scripts/setup-git-hooks.sh",
|
|
);
|
|
console.error(
|
|
" Or install prek manually: https://prek.j178.dev/installation/",
|
|
);
|
|
process.exit(1);
|
|
}
|