20 lines
739 B
JavaScript
20 lines
739 B
JavaScript
import { copyFileSync, chmodSync, mkdirSync, existsSync } from 'node:fs';
|
|
import path from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
const root = path.resolve(__dirname, '..');
|
|
const hooksDir = path.join(root, '.git', 'hooks');
|
|
const src = path.join(root, 'tools', 'hooks', 'pre-commit');
|
|
const dest = path.join(hooksDir, 'pre-commit');
|
|
|
|
if (!existsSync(path.join(root, '.git'))) {
|
|
console.error('Not a git repository. Run from the repo root.');
|
|
process.exit(1);
|
|
}
|
|
|
|
mkdirSync(hooksDir, { recursive: true });
|
|
copyFileSync(src, dest);
|
|
try { chmodSync(dest, 0o755); } catch { /* Windows */ }
|
|
console.log('Installed pre-commit hook → .git/hooks/pre-commit');
|