#!/usr/bin/perl use warnings; use strict; use File::Basename; sub print_header { print '', "\n"; print "\n\nLog CVS\n"; print '', "\n"; print '', "\n"; print '', "\n"; print '', "\n"; print "\n\n"; print '
', "\n"; } sub print_footer { print "
\n\n\n"; } sub print_entry { return if (!defined ($_[0])); shift if ($_[0] =~ m/^\s*$/); print "
\n
\n"; if ($_[0] =~ m/^LOG: (\w+) ([-\w\/]+)/) { print '
' , $2 , "
\n"; print '
' , $1 , "
\n"; } my ($mod, $msg); for (my $i = 0; $i < @_; $i ++) { $mod = $i if ((!defined ($mod)) && ($_[$i] =~ /^\w+ Files:$/)); $msg = $i if ($_[$i] =~ /^Log Message:$/); } if (defined ($msg)) { print "
\n

Message

\n

\n"; for (my $i = $msg + 1; $i < @_; $i ++) { print $_[$i], "
\n" if ($_[$i] !~ /^\s*$/); } print "

\n
\n"; } if (defined ($mod)) { print "
\n"; for (my $i = $mod; $i < $msg; ) { if ($_[$i] =~ /^(\w+) Files:/) { my $type = $1; print "

Fichiers ajoutés

\n" if ($type =~ m/Added/); print "

Fichiers supprimés

\n" if ($type =~ m/Removed/); print "

Fichiers modifiés

\n" if ($type =~ m/Modified/); $i ++; } else { print "

\n"; for (; $i < $msg; $i++) { last if ($_[$i] =~ m/^\w+ Files:/); for (split (/ /,$_[$i])) { print $_, "
\n"; } } print "

\n"; } } print "
\n"; } print "
\n"; } sub print_import { return if (!defined ($_[0])); shift if ($_[0] =~ m/^\s*$/); print "
\n
\n"; if ($_[0] =~ m/^LOG: (\w+) ([\w\/]+)/) { print '
' , $2 , "
\n"; print '
' , $1 , "
\n"; } my ($msg,$sta); for (my $i = 0; $i < @_; $i ++) { $msg = $i if ($_[$i] =~ /^Log Message:$/); $sta = $i if ($_[$i] =~ /^Status:$/); } print "
\n

Message

\n

\n"; for (my $i = $msg + 1; $i < $sta; $i ++) { print $_[$i], "
\n" if ($_[$i] !~ /^\s*$/); } print "

\n
\n"; print "
\n"; print "

Fichiers importés

\n

\n"; for (my $i = $msg ; $i < @_; $i ++) { print $_[$i], "
\n" if ($_[$i] =~ /^N /); } print "

\n
\n"; print "
\n"; } die "usage: $0 files\n" if (!defined ($ARGV[0])); print_header (); #$/ = "\n\n\n"; user qui fout de la merde dans le log (genre deux lignes vides #a la fin obligé de recoder a la main my $line; for (@ARGV) { open LOG, $_ or die "Can' open $_: $!\n"; print "

Log CVS ", basename ($_), "

\n"; $line = ; while (!eof LOG) { my @lines; push @lines, $line; while ((defined ($line = )) && ($line !~ /^LOG: /)) { chomp $line; push @lines, $line; } if ($lines[0] =~ /Imported/) { print_import (@lines); } else { print_entry (@lines); } } close LOG; } print_footer ();