summaryrefslogtreecommitdiff
path: root/d/dev/sys/lampion/scripts/cvslog2html
blob: 21c57349cc2f0d9edd3db32d7f23fcc1451e0ec1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/usr/bin/perl

use warnings;
use strict;

use File::Basename;

sub print_header 
{
	print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">', "\n";
	print "<html>\n<head>\n<title>Log CVS</title>\n";
	print '<link rel="stylesheet" type="text/css" href="style.css" media="screen" title="Normal" />', "\n";
	print '<link rel="alternate stylesheet" type="text/css" href="" media="screen" title="Sans habillage" />', "\n";
	print '<meta http-equiv="Content-Type" content="text/HTML; charset=iso-8859-1" />', "\n";
	print '<meta name="content-language" content="fr" />', "\n";
	print "</head>\n<body>\n";
	print '<div id="page">', "\n";
}

sub print_footer
{
	print "</div>\n</body>\n</html>\n";
}

sub print_entry 
{
	return if (!defined ($_[0]));
	shift if ($_[0] =~ m/^\s*$/);
	print "<div class=\"entry\">\n<hr />\n";
	if ($_[0] =~ m/^LOG: (\w+) ([-\w\/]+)/) {
		print '<div class="id">' , $2 , "</div>\n";
		print '<div class="auteur">' , $1 , "</div>\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 "<div class=\"log\">\n<h3>Message</h3>\n<p>\n";
		for (my $i = $msg + 1; $i < @_; $i ++) {
			print $_[$i], "<br />\n" if ($_[$i] !~ /^\s*$/);
		}
		print "</p>\n</div>\n";
	}
	if (defined ($mod)) {
		print "<div class=\"action\">\n";
		for (my $i = $mod; $i < $msg; ) {
			if ($_[$i] =~ /^(\w+) Files:/) {
				my $type = $1;
				print "<h3>Fichiers ajout�s</h3>\n" if ($type =~ m/Added/);
				print "<h3>Fichiers supprim�s</h3>\n" if ($type =~ m/Removed/);
				print "<h3>Fichiers modifi�s</h3>\n" if ($type =~ m/Modified/);
				$i ++;
			}
			else {  
				print "<p>\n";
				for (; $i < $msg; $i++) {
					last if ($_[$i] =~ m/^\w+ Files:/);
					for (split (/ /,$_[$i])) {
						print $_, "<br />\n";
					}

				}
				print "</p>\n";
			}

		}
		print "</div>\n";
	}
	print "</div>\n";
}

sub print_import
{
	return if (!defined ($_[0]));
	shift if ($_[0] =~ m/^\s*$/);
	print "<div class=\"entry\">\n<hr />\n";
	if ($_[0] =~ m/^LOG: (\w+) ([\w\/]+)/) {
		print '<div class="id">' , $2 , "</div>\n";
		print '<div class="auteur">' , $1 , "</div>\n";
	}
	my ($msg,$sta);
	for (my $i = 0; $i < @_; $i ++) {
		$msg = $i if ($_[$i] =~ /^Log Message:$/);
		$sta = $i if ($_[$i] =~ /^Status:$/);
	}
	print "<div class=\"log\">\n<h3>Message</h3>\n<p>\n";
	for (my $i = $msg + 1; $i < $sta; $i ++) {
		print $_[$i], "<br />\n" if ($_[$i] !~ /^\s*$/);
	}
	print "</p>\n</div>\n";
	print "<div class=\"action\">\n";
	print "<h3>Fichiers import�s</h3>\n<p>\n";
	for (my $i = $msg ; $i < @_; $i ++) {
		print $_[$i], "<br />\n" if ($_[$i] =~ /^N /);
	}
	print "</p>\n</div>\n";
	print "</div>\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 "<h1>Log CVS ", basename ($_), "</h1>\n";
	$line = <LOG>;
	while (!eof LOG) {
		my @lines;
		push @lines, $line;
		while ((defined ($line = <LOG>)) && ($line !~ /^LOG: /)) {
			chomp $line;
			push @lines, $line;
		}
		if ($lines[0] =~ /Imported/) {
			print_import (@lines);
		} else {
			print_entry (@lines);
		}
	}
	close LOG;
}
print_footer ();