Skip to content

Instantly share code, notes, and snippets.

@ehynds
Forked from tbranyen/git_profanity_check.js
Created May 9, 2011 16:48
Show Gist options
  • Save ehynds/962860 to your computer and use it in GitHub Desktop.
Save ehynds/962860 to your computer and use it in GitHub Desktop.
git profanity check
#!/usr/bin/env node
// Copyright 2011, Tim Branyen @tbranyen <tim@tabdeveloper.com>
// Dual licensed under the MIT and GPL licenses.
// Script to detect cursewords in commit messages and provide the
// offending commit sha's.
var git = require('nodegit');
var curses = ['fuck', 'shit', 'bitch', 'ass', ],
path = './.git',
branch = 'master',
wordExp = /\b\w+\b/g;
// 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) {
var messageWords = commit.message.match(wordExp);
// Check commit messages first
messageWords.forEach(function(word) {
if (curses.indexof(word) > -1) {
console.log('Curse detected in commit', commit.sha, 'message');
return;
}
});
});
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment