shithub: shithub

ref: d40987598fe486071961c8cafd69826229821b9d
dir: /feed/

View raw version
#!/bin/rc -e

. /sys/lib/shithub/common.rc

fn rssitem {
	puser=$1
	prepo=$2
	phash=$3

	d=`{pwd}
	guid='http://'$host'/git/'$puser/$prepo/$phash'/commit.html'
	message=`{htcat $gitfs/object/$phash/msg | sed 1q}
	description=`''{htcat $gitfs/object/$phash/msg}
	date=`{date -uf$dfmt `{mtime $gitfs/object/$phash/msg |awk '{print $1}'}}
	author=`"{sed 's/(.*) <(.*)>/\2 (\1)/g' < $gitfs/object/$phash/author}
	echo '	<item>
		<guid>'$"guid'</guid>
		<pubDate>'$"date'</pubDate>
		<title>'$"message'</title>
		<author>'$"author'</author>
		<link>'$guid'</link>
		<description><![CDATA[ <pre>'$description'</pre> ]]></description>
		</item>'		
	cd $d
}

cd $1
shift

rfork ne
nl='
'

gituser=$1
repo=$2
refname=$3
dfmt='WW, DD MMM YYYY hh:mm:ss Z'

repons $gituser $repo
if(! ref=`{resolveref $refname}){
	echo '<b>invalid ref '$refname'</b>'
	exit
}

if(test -f $gitfs/$ref/hash)
	hash=`{cat $gitfs/$ref/hash}
if not
	hash=$ref

echo '<?xml version="1.0" encoding="utf-8" ?>
	<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
	<atom:link href="http://'$host/$gituser/$repo/'HEAD/feed.rss" rel="self" type="application/rss+xml" />
	<title>'$gituser/$repo' git log</title>
	<link>http://'$host'/git/'$gituser/$repo/'HEAD/log.html</link>
	<description>shithub git/log for repository '$gituser/$repo'</description>
	<lastBuildDate>'`"{date -uf$dfmt}'</lastBuildDate>
	<language>en-us</language>
'

if(! test -d $gitfs/$ref/tree){
	echo '	</channel>
		</rss>
	'
	exit
}
cd $gitfs/$ref/tree
commithash=`{cat $gitfs/HEAD/hash | sed 1q}
count=()
while (! ~ $#commithash 0 && ! ~ $#count 10) {
	count=($count 1)
	rssitem $gituser $repo $commithash
	commithash=`{cat $gitfs/object/$commithash/parent | sed 1q}
}
echo '	</channel>
	</rss>
'