#!/usr/bin/env perl
# @(#)$Ident: .gitcommit-msg 2013-04-06 14:35 pjf ;

use strict;
use warnings;
use version; our $VERSION = qv( '0.1' );

use English qw(-no_match_vars);

my $msgf = $ARGV[ 0 ]; my $file = 'Changes';

if (-f $file) {
   open my $in, '<', $msgf or die "Path ${msgf} cannot open: ${OS_ERROR}";

   my $body    = do { local $RS = undef; <$in> }; close $in;

   open $in, '<', $file or die "File ${file} cannot open: ${OS_ERROR}";

   my $changes = do { local $RS = undef; <$in> }; close $in;
   my ($entry) = $changes =~ m{ [\n][\n] (.*?) [\n][\n] }msx;
   my ($ver)   = $changes =~ m{ ^ (v?[0-9._]+) }mx;
      $entry ||= 'Updated'; $ver ||= '0.1.1';
   my $line    = (grep { m{ \A [ \t] }mx } split m{ [\n] }mx, $entry)[ 0 ];
      $line  ||= q(); $line =~ s{ \A [ \t]+ }{}mx;
   my $header  = substr "${ver} ${line}", 0, 45;
   my $message = length $body > 1 ? "${header}\n\n${body}" : $header;

   open my $out, '>', $msgf or die "Path ${msgf} cannot open: ${OS_ERROR}";
   print {$out} $message; close $out;
}

exit 0;
