diff --git a/Gruntfile.js b/Gruntfile.js index fd1d6b0092..3ffdb4263d 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -124,7 +124,6 @@ module.exports = function(grunt) { require('load-grunt-tasks')(grunt); grunt.registerTask('default', [ - 'enforce', 'jshint', 'sass', 'cssmin', @@ -151,11 +150,4 @@ module.exports = function(grunt) { done(); }); }); - - grunt.registerTask('enforce', 'Install commit message enforce script if it doesn\'t exist', function() { - if (!grunt.file.exists('.git/hooks/commit-msg')) { - grunt.file.copy('scripts/validate-commit-msg.js', '.git/hooks/commit-msg'); - require('fs').chmodSync('.git/hooks/commit-msg', '0755'); - } - }); }; diff --git a/scripts/validate-commit-msg.js b/scripts/validate-commit-msg.js deleted file mode 100644 index 5b922dafff..0000000000 --- a/scripts/validate-commit-msg.js +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/env node - -/* - * https://github.com/angular/angular.js/blob/master/validate-commit-msg.js - */ - -/** - * Git COMMIT-MSG hook for validating commit message - * See https://docs.google.com/document/d/1rk04jEuGfk9kYzfqCuOlPTSJw3hEDZJTBN5E5f1SALo/edit - * - * Installation: - * >> cd - * >> ln -s ../../validate-commit-msg.js .git/hooks/commit-msg - */ -var fs = require('fs'); -var util = require('util'); - - -var MAX_LENGTH = 100; -var PATTERN = /^(?:fixup!\s*)?(\w*)(\(([\w\$\.\-\*/]*)\))?\: (.*)$/; -var IGNORED = /^WIP\:/; -var TYPES = { - feat: true, - fix: true, - docs: true, - style: true, - refactor: true, - perf: true, - test: true, - chore: true, - revert: true -}; - - -var error = function() { - // gitx does not display it - // http://gitx.lighthouseapp.com/projects/17830/tickets/294-feature-display-hook-error-message-when-hook-fails - // https://groups.google.com/group/gitx/browse_thread/thread/a03bcab60844b812 - console.error('INVALID COMMIT MSG: ' + util.format.apply(null, arguments)); -}; - - -var validateMessage = function(message) { - var isValid = true; - - if (IGNORED.test(message)) { - console.log('Commit message validation ignored.'); - return true; - } - - if (message.length > MAX_LENGTH) { - error('is longer than %d characters !', MAX_LENGTH); - isValid = false; - } - - var match = PATTERN.exec(message); - - if (!match) { - error('does not match "(): " ! was: ' + message); - return false; - } - - var type = match[1]; - var scope = match[3]; - var subject = match[4]; - - if (!TYPES.hasOwnProperty(type)) { - error('"%s" is not allowed type !', type); - return false; - } - - // Some more ideas, do want anything like this ? - // - allow only specific scopes (eg. fix(docs) should not be allowed ? - // - auto correct the type to lower case ? - // - auto correct first letter of the subject to lower case ? - // - auto add empty line after subject ? - // - auto remove empty () ? - // - auto correct typos in type ? - // - store incorrect messages, so that we can learn - - return isValid; -}; - - -var firstLineFromBuffer = function(buffer) { - return buffer.toString().split('\n').shift(); -}; - - - -// publish for testing -exports.validateMessage = validateMessage; - -// hacky start if not run by jasmine :-D -if (process.argv.join('').indexOf('jasmine-node') === -1) { - var commitMsgFile = process.argv[2]; - var incorrectLogFile = commitMsgFile.replace('COMMIT_EDITMSG', 'logs/incorrect-commit-msgs'); - - fs.readFile(commitMsgFile, function(err, buffer) { - var msg = firstLineFromBuffer(buffer); - - if (!validateMessage(msg)) { - fs.appendFile(incorrectLogFile, msg + '\n', function() { - process.exit(1); - }); - } else { - process.exit(0); - } - }); -}