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