--- CVSROOT/cvs2rss.pl 2005/10/24 21:53:20 1.9 +++ CVSROOT/cvs2rss.pl 2008/11/26 18:43:30 1.13 @@ -21,31 +21,30 @@ # Edit by Guy Albertelli, -- corrected the packaging of Entities # - commits now
ed # - removed html rants -# +# Edit by Stuart Raeburn, -- eliminated earlier HTML::Entities customization. use strict; -use HTML::Entities(); use XML::RSS; use POSIX; # Stuff you need to setup -my $rssFeed ="/home/loninst/public_html/loncapa.rss"; +my $cvslink = 'http://source.loncapa.org/cgi-bin/cvsweb.cgi/'; +my $rssFeed ="/home/rss/cvs.rss"; my $emailDomain = "loncapa.org"; my $channelTitle = "Lon-CAPA RSS Feed"; -my $channelLink = "http://install.loncapa.org/loncapa.rss"; -my $numEntries = 200; +my $channelLink = "http://source.loncapa.org/rss/cvs.rss"; +my $numEntries = 30; # Set this to 1 to enable cvs rdiff my $cvsDiff = 1; # Leave everything else alone -my $author = getpwuid(getuid()) . "\@" . $emailDomain; -$author = 'guy' . "\@" . 'albertelli.com'; +my $author = getpwuid(getuid()); my $pubDate = strftime('%a, %d %b %Y %H:%M:%S %Z',localtime(time)); -my $description; - my @args = split(" ", $ARGV[0]); +my $dir = shift(@args); + # bail when this is a new directory &bail if $args[0] eq '-' && "$args[1] $args[2]" eq 'New directory'; # bail if this is an import @@ -71,25 +70,29 @@ $rss->channel( # Limit entries in the feed to $numEntries pop(@{$rss->{'items'}}) while (@{$rss->{'items'}} >= $numEntries); +my $commit_msg; +while () { + chomp($_); + if ($_=~/^[A-Z].*:\s*$/) { + $_ = "
" .$_."
"; + } else { + $_ .= "
"; + } + $commit_msg .= $_; +} + +$commit_msg .= '
Author:
'.$author.'
'; + foreach my $file (@args) { my @title=split(",",$file); - + my $description = $commit_msg; # Format title of the rss item # Remove space, append / and set title to /file/that/changed - oldversion/newversion $title[0] =~s/ /\//; - + $title[0] = $dir.'/'.$title[0]; + # Format the cvslog msg itself - while () { - chomp($_); - if ($_=~/^[A-Z].*:\s*$/) { - $_ = "
" . &HTML::Entities::encode($_,'<>&"') . "
"; - } else { - $_ = &HTML::Entities::encode($_,'<>&"'); - $_ .= "
"; - } - $description .= $_; - } if ($cvsDiff == 1) { @@ -98,7 +101,9 @@ foreach my $file (@args) { # This will rdiff it against the previous version, and # include that diff in the rss feed - if (($title[1] != "NONE") && ($title[0]=~/(.*).(pm|pl|conf|tab)$/)){ + if (($title[1] != "NONE") + && ($title[0]=~/(.*)\.(pm|pl|conf|tab)$/) + && ($title[0]!~{/localize/localize/..\.pm}) ) { my $tmpFile = "/tmp/diff.$$"; my $cmdLine = "cvs -n rdiff -u -kk -r " . $title[1] . " -r " . $title[2] . " " . $title[0] . ">" . $tmpFile; system($cmdLine); @@ -106,14 +111,14 @@ foreach my $file (@args) { $description .= "
Differences:"; open CVSDIFF, "<" . $tmpFile; foreach my $line ("; unlink($tmpFile); } } - my $link = 'http://install.loncapa.org/cgi-bin/cvsweb.cgi/'.$title[0]; + my $link = $cvslink.$title[0]; if ($title[1] != "NONE") { $link .= '.diff?r1='.$title[1].';r2='.$title[2].';f=h'; } @@ -126,10 +131,6 @@ foreach my $file (@args) { pubDate => $pubDate, link => $link ); - - foreach my $element (@{$rss->{'items'}}) { - $element->{'description'} = &HTML::Entities::encode($element->{'description'},'<>&"'); - } } $rss->save($rssFeed);) { - $description .= &HTML::Entities::encode($line,'<>&"'); + $description .= $line; } $description .= "