diff options
author | Tom Willemse | 2014-04-09 00:53:03 +0200 |
---|---|---|
committer | Tom Willemse | 2014-04-09 00:53:03 +0200 |
commit | 74763c295b5f8cc4f9b5864bb2bba832bc040e74 (patch) | |
tree | 78e33de47ff91cea549a22e271df43d53b38a433 /commit-check | |
parent | efee9b6ce05a7719468b23816a1f0d91d54966eb (diff) | |
download | commit-check-74763c295b5f8cc4f9b5864bb2bba832bc040e74.tar.gz commit-check-74763c295b5f8cc4f9b5864bb2bba832bc040e74.zip |
Add -h and -0 command-line options
Add the `-0' option so that a flycheck checker can be written. These
don't seem to like it when the checker exits with a non-zero status,
whereas for the purposes of being a `commit-msg' hook for git it is
important that it does exit with a non-zero status to stop git from
committing.
Diffstat (limited to 'commit-check')
-rwxr-xr-x | commit-check | 57 |
1 files changed, 51 insertions, 6 deletions
diff --git a/commit-check b/commit-check index c788036..ae80804 100755 --- a/commit-check +++ b/commit-check @@ -24,6 +24,33 @@ first command-line argument. The style that's checked is based on tpope's L<A Note About Git Commit Messages|http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html>. +=head2 Command-line options + +There are 2 command line options available for use with this program: + +=over + +=item -0 + +Don't return a non-zero status when errors have been found. For use as +a git C<commit-msg> hook it is important that it does exit with a +non-zero status. But if you are using it for other tools, such as for +a flycheck checker, exiting with a non-zero status might confuse the +tools calling it. + +=item -h + +Show a little help text that describes the command line options and +usage. + +=back + +When no arguments are passed (not even the file name) the help text is +also shown and the exit status is non-0 (no matter if C<-0> has been +given). + +=head2 Errors + Currently there are 4 style errors that are checked for. =over @@ -51,19 +78,21 @@ No line should be longer than 72 characters. All comments are skipped and so is all whitespace at the beginning of the file. -If any of the error conditions are encountered the program will exit -with a non-C<0> status. This has the effect of stopping git from -committing the message when this program is used as a C<commit-msg> -hook. Each error condition encountered also prints a message to the -standard error stream. +If any of the error conditions are encountered, and the C<-0> option +has not been given, the program will exit with a non-C<0> status. This +has the effect of stopping git from committing the message when this +program is used as a C<commit-msg> hook. Each error condition +encountered also prints a message to the standard error stream. =cut use strict; use warnings; +use Getopt::Std; my $lineno = 0; my $status = 0; +my %arguments = (); sub err { my ($msg) = @_; @@ -72,6 +101,21 @@ sub err { $status = 1; } +sub usage { + my ($status) = @_; + print "Usage: commit-check [-0|-h] <file>\n" + . "\n" + . "Accepted arguments:\n" + . " -0 Always return 0 exit-status, regardless of errors found.\n" + . " -h Show this help text.\n"; + exit $status; +} + +getopts("0h", \%arguments); + +usage 0 if $arguments{h}; +usage 1 if !$ARGV[0]; + open(my $commitfile, "<", $ARGV[0]) or die "Couldn't open $ARGV[0]"; while (<$commitfile>) { @@ -90,4 +134,5 @@ while (<$commitfile>) { } close $commitfile; -exit $status; +exit $status if !$arguments{0}; +exit 0; |