#!/usr/bin/env node // Copyright 2011, Tim Branyen @tbranyen // Dual licensed under the MIT and GPL licenses. // Script to detect cursewords in commit messages and provide the // offending commit sha's. // vim: ft=javascript var git = require( 'nodegit' ); var curses = [ 'add', 'swears', 'here' ] , path = './.git' , branch = 'master' , reCurse = new RegExp('\\b(?:' + curses.join('|') + ')\\b', 'gi'); // Set git path if ( process.argv.length < 3 ) { console.log( 'No path passed as argument, defaulting to ./.git' ); } else { path = process.argv[2]; // Set repo branch if ( process.argv.length < 4 ) { console.log( 'No branch passed as argument, defaulting to master' ); } else { branch = process.argv[3]; } } // Open repository git.repo( path, function( err, repo ) { if ( err ) { throw new Error( err ); } // Open branch repo.branch( branch, function( err, branch ) { if ( err ) { throw new Error( err ); } // Iterate history var history = branch.history(); history.on( 'commit', function( idx, commit ) { // Check commit messages first if ( reCurse.test(commit.message) ) { console.log( 'Curse detected in commit', commit.sha, 'message' ); return; } }); }); });