]> git.plutz.net Git - busy/blob - Subversion.page
started Admin interface, integrated flattr
[busy] / Subversion.page
1 #!/bin/zsh
2 url="$(egrep -o '(^|&)(i=).+(&|$)' <<<"${QUERY_STRING}" |sed -r 's:^&?i=::;s:&.*::;s:\+: :g;s:%:\\x:g')"
3 url="$(echo -e "${url}" |sed 's:\t: :g;s:\r::g;s:\\:\\\\:g' |head -n1)"
4 rev="$(egrep -o '(^|&)(r=)[0-9]+(&|$)' <<<"${QUERY_STRING}" |tr -d 'r=&')"
5
6 baseuri=$(egrep '^repo=.*$' project.meta |cut -d= -f2-)
7 lastrev=$(svn info "$baseuri" |egrep '^Revision:' |cut -d\  -f2)
8 [ -z "$rev" ] && rev="$lastrev"
9
10 cat <<SVNEND
11   <div id="LEFT">
12     <h1>Path:</h1>
13     <a href='?p=Subversion&amp;i=/&amp;r=$rev'>[root]</a> 
14 SVNEND
15 tmp=$url
16 until [ -z "$tmp" -o "$tmp" = // ]; do
17   echo "<a href='?p=Subversion&amp;i=$tmp&amp;r=$rev'>/$(basename "$tmp")</a> "
18   tmp=$(dirname "$tmp")/
19 done |tac
20 echo '<hr><h1>Revisions:</h1>'
21 for i in {1.."$lastrev"}; do
22   echo "<a href='?p=Subversion&amp;i=$url&amp;r=$i'>$i</a>"
23 done
24
25 cat <<SVNEND
26   </div>
27
28   <div id="RIGHT">
29     <h1>Changelog:</h1><hr>
30     $(svn log $(egrep -q '^(.*/|)$' <<<"$url" && echo '') "${baseuri}/${url}" |\
31 sed -rn '2,${s:^-+$:</div>:g;
32 s:^r([0-9]+) \| ([a-zA-Z0-9]+) \| ([0-9: -]+) .+$:<div class="changelog"><h2>Revision \1 by \2<br>at \3</h2>:g;p}')
33   </div>
34
35   <div id="MAIN">
36   <div class='wikitext'><h1>$(basename "$url"), Revision "$rev":</h1>
37 SVNEND
38 if (egrep -q '^(.*/|)$' <<<"$url"); then
39   svn ls -r "$rev" "${baseuri}/${url}" |sed -r "s:^.*$:<a href='?p=Subversion\&amp;i=$url/&\&amp;r=$rev'>&</a><br>:g"
40   echo '</div>'
41 else
42   lang=$(source-highlight --lang-list |cut -d\  -f1 |grep -x "$(sed 's:.*\.::g' <<<"$url")" || echo sh)
43   grep -q '\.' <<<"$url" || lang=txt
44   svn cat -r "$rev" "${baseuri}/${url}" |source-highlight -s "$lang" #|sed 's:<:\&lt;:g;s:>:\&gt;:g;'
45 fi
46 cat <<SVNEND
47   </div></div>
48 SVNEND