cookutils diff web/cooker.cgi @ rev 810

cooker.cgi: add man & doc links
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Jul 05 20:18:31 2016 +0200 (2016-07-05)
parents 05a7f4f61409
children 5990a5522799
line diff
     1.1 --- a/web/cooker.cgi	Sun Jul 03 11:44:55 2016 +0200
     1.2 +++ b/web/cooker.cgi	Tue Jul 05 20:18:31 2016 +0200
     1.3 @@ -3,6 +3,8 @@
     1.4  # SliTaz Cooker CGI/web interface.
     1.5  #
     1.6  
     1.7 +. /usr/lib/slitaz/httphelper.sh
     1.8 +
     1.9  [ -f "/etc/slitaz/cook.conf" ] && . /etc/slitaz/cook.conf
    1.10  [ -f "cook.conf" ] && . ./cook.conf
    1.11  
    1.12 @@ -80,7 +82,7 @@
    1.13  	<link>$COOKER_URL</link>
    1.14  	<lastBuildDate>$pubdate</lastBuildDate>
    1.15  	<pubDate>$pubdate</pubDate>
    1.16 -	<atom:link href="http://cook.slitaz.org/cooker.cgi?rss" rel="self" type="application/rss+xml" />
    1.17 +	<atom:link href="http://cook.slitaz.org/?rss" rel="self" type="application/rss+xml" />
    1.18  EOT
    1.19  	for rss in $(ls -lt $FEEDS/*.xml | head -n 12); do
    1.20  		cat $rss | sed 's|<guid|& isPermaLink="false"|g;s|</pubDate| GMT&|g'
    1.21 @@ -98,6 +100,18 @@
    1.22  #
    1.23  
    1.24  
    1.25 +# Unpack to stdout 
    1.26 +
    1.27 +docat() {
    1.28 +	case "$1" in
    1.29 +	*gz) zcat ;;
    1.30 +	*bz2) bzcat ;;
    1.31 +	*xz) xzcat ;;
    1.32 +	*) cat
    1.33 +	esac < $1
    1.34 +}
    1.35 +
    1.36 +
    1.37  # Put some colors in log and DB files.
    1.38  
    1.39  syntax_highlighter() {
    1.40 @@ -161,7 +175,7 @@
    1.41  more_button() {
    1.42  	[ $(wc -l < ${3:-$CACHE/$1}) -gt ${4:-12} ] && cat <<EOT
    1.43  <div style="float: right;">
    1.44 -	<a class="button" href="cooker.cgi?file=$1">$2</a>
    1.45 +	<a class="button" href="?file=$1">$2</a>
    1.46  </div>
    1.47  EOT
    1.48  }
    1.49 @@ -235,7 +249,7 @@
    1.50  		# Package info.
    1.51  		echo '<div id="info">'
    1.52  		if [ -f "$wok/$pkg/receipt" ]; then
    1.53 -			echo "<a href='cooker.cgi?receipt=$pkg'>receipt</a>"
    1.54 +			echo "<a href='?receipt=$pkg'>receipt</a>"
    1.55  			unset WEB_SITE
    1.56  			. $wok/$pkg/receipt
    1.57  
    1.58 @@ -243,19 +257,25 @@
    1.59  			echo "<a href='$WEB_SITE'>home</a>"
    1.60  
    1.61  			if [ -f "$wok/$pkg/taz/$PACKAGE-$VERSION/receipt" ]; then
    1.62 -				echo "<a href='cooker.cgi?files=$pkg'>files</a>"
    1.63 +				echo "<a href='?files=$pkg'>files</a>"
    1.64  				unset EXTRAVERSION
    1.65  				. $wok/$pkg/taz/$PACKAGE-$VERSION/receipt
    1.66  				if [ -f $wok/$pkg/taz/$PACKAGE-$VERSION/description.txt ]; then
    1.67 -					echo "<a href='cooker.cgi?description=$pkg'>description</a>"
    1.68 +					echo "<a href='?description=$pkg'>description</a>"
    1.69  				fi
    1.70  				if [ -f $PKGS/$PACKAGE-$VERSION$EXTRAVERSION.tazpkg ]; then
    1.71 -					echo "<a href='cooker.cgi?download=$PACKAGE-$VERSION$EXTRAVERSION.tazpkg'>download</a>"
    1.72 +					echo "<a href='?download=$PACKAGE-$VERSION$EXTRAVERSION.tazpkg'>download</a>"
    1.73  				fi
    1.74  				if [ -f $PKGS/$PACKAGE-$VERSION$EXTRAVERSION-$ARCH.tazpkg ]; then
    1.75 -					echo "<a href='cooker.cgi?download=$PACKAGE-$VERSION$EXTRAVERSION-$ARCH.tazpkg'>download</a>"
    1.76 +					echo "<a href='?download=$PACKAGE-$VERSION$EXTRAVERSION-$ARCH.tazpkg'>download</a>"
    1.77  				fi
    1.78  			fi
    1.79 +			if [ -x ./man2html && -d $wok/$pkg/install/usr/share/man ]; then
    1.80 +				echo "<a href='?man=$PACKAGE'>man</a>"
    1.81 +			fi
    1.82 +			if [ -d $wok/$pkg/install/usr/share/doc ]; then
    1.83 +				echo "<a href='?doc=$PACKAGE'>doc</a>"
    1.84 +			fi
    1.85  			echo "<a href='ftp://${HTTP_HOST%:*}/$pkg/'>browse</a>"
    1.86  		else
    1.87  			if [ $(ls $wok/*$pkg*/receipt 2> /dev/null | wc -l) -eq 0 ]; then
    1.88 @@ -269,7 +289,7 @@
    1.89  					. $wok/$pkg/receipt
    1.90  					cat <<EOT
    1.91  <tr>
    1.92 -<td><a href="cooker.cgi?pkg=$pkg">$pkg</a></td>
    1.93 +<td><a href="?pkg=$pkg">$pkg</a></td>
    1.94  <td>$SHORT_DESC</td>
    1.95  <td>$CATEGORY</td>
    1.96  </tr>
    1.97 @@ -307,7 +327,7 @@
    1.98  			case "$HTTP_USER_AGENT" in
    1.99  			*SliTaz*)
   1.100  				[ -f $CACHE/cooker-request ] && [ -n "$HTTP_REFERER" ] &&
   1.101 -				echo "<a class=\"button\" href=\"cooker.cgi?recook=$pkg\">Recook $pkg</a>"
   1.102 +				echo "<a class=\"button\" href=\"?recook=$pkg\">Recook $pkg</a>"
   1.103  			esac
   1.104  		else
   1.105  			[ "$pkg" ] && echo "<pre>No log: $pkg</pre>"
   1.106 @@ -330,7 +350,7 @@
   1.107  				echo "<h2>DB: broken - Packages: $nb</h2>"
   1.108  				echo '<pre>'
   1.109  				cat $CACHE/$file | sort | \
   1.110 -					sed s"#^[^']*#<a href='cooker.cgi?pkg=\0'>\0</a>#"g
   1.111 +					sed s"#^[^']*#<a href='?pkg=\0'>\0</a>#"g
   1.112  				echo '</pre>' ;;
   1.113  
   1.114  			*.diff)
   1.115 @@ -411,12 +431,41 @@
   1.116  			echo "<pre>No description for: $pkg</pre>"
   1.117  		fi ;;
   1.118  
   1.119 +	man=*|doc=*)
   1.120 +		type=${QUERY_STRING%%=*}
   1.121 +		pkg=$(GET $type)
   1.122 +		dir=$WOK/$pkg/install/usr/share/$type
   1.123 +		page=$(GET file)
   1.124 +		if [ -z "$page" ]; then
   1.125 +			page=$(find $dir -type f | sed q)
   1.126 +			page=${page#$dir/}
   1.127 +		fi
   1.128 +		find $dir -type f | while read file ; do
   1.129 +			file=${file#$dir/}
   1.130 +			echo "<a href='?$type=$pkg&amp;file=$file'>$(basename $file)</a>"
   1.131 +		done
   1.132 +		echo "<h2>$(basename $page)</h2>"
   1.133 +		tmp="$(mktemp)"
   1.134 +		docat "$dir/$page" > $tmp
   1.135 +		case "$type" in
   1.136 +		doc)
   1.137 +			echo '<pre>'
   1.138 +			sed 's/&/\&amp;/g;s/</\&lt;/g;s/>/\&gt;/g' < "$tmp"
   1.139 +			echo '</pre>' ;;
   1.140 +		man)
   1.141 +			export TEXTDOMAIN='man2html'
   1.142 +			./man2html "$tmp" | sed -e '1,/<header>/d' \
   1.143 +			-e 's|<a href="file:///[^>]*>\([^<]*\)</a>|\1|g' \
   1.144 +			-e 's|<a href="?[1-9]\+[^>]*>\([^<]*\)</a>|\1|g' ;;
   1.145 +		esac
   1.146 +		rm -f $tmp
   1.147 +		;;
   1.148  	*)
   1.149  		# We may have a toolchain.cgi script for cross cooker's
   1.150  		if [ -f "toolchain.cgi" ]; then
   1.151  			toolchain='toolchain.cgi'
   1.152  		else
   1.153 -			toolchain='cooker.cgi?pkg=slitaz-toolchain'
   1.154 +			toolchain='?pkg=slitaz-toolchain'
   1.155  		fi
   1.156  		# Main page with summary. Count only package include in ARCH,
   1.157  		# use 'cooker arch-db' to manually create arch.$ARCH files.
   1.158 @@ -447,7 +496,7 @@
   1.159  		[ -e $CACHE/cooker-request ] &&
   1.160  		[ $CACHE/activity -nt $CACHE/cooker-request ] && cat <<EOT
   1.161  <div style="float: right;">
   1.162 -	<a class="button" href="cooker.cgi?poke">Poke cooker</a>
   1.163 +	<a class="button" href="?poke">Poke cooker</a>
   1.164  </div>
   1.165  EOT
   1.166  		cat <<EOT
   1.167 @@ -461,10 +510,10 @@
   1.168  
   1.169  <p>
   1.170  	Latest:
   1.171 -	<a href="cooker.cgi?file=cookorder.log">cookorder.log</a>
   1.172 -	<a href="cooker.cgi?file=commits.log">commits.log</a>
   1.173 -	<a href="cooker.cgi?file=pkgdb.log">pkgdb.log</a>
   1.174 -	<a href="cooker.cgi?file=installed.diff">installed.diff</a>
   1.175 +	<a href="?file=cookorder.log">cookorder.log</a>
   1.176 +	<a href="?file=commits.log">commits.log</a>
   1.177 +	<a href="?file=pkgdb.log">pkgdb.log</a>
   1.178 +	<a href="?file=installed.diff">installed.diff</a>
   1.179  	- Architecture $ARCH:
   1.180  	<a href="$toolchain">toolchain</a>
   1.181  </p>
   1.182 @@ -503,14 +552,14 @@
   1.183  $(more_button broken "All broken packages" $broken 20)
   1.184  <h2 id="broken">Broken</h2>
   1.185  <pre>
   1.186 -$(cat $broken | head -n 20 | sed s"#^[^']*#<a href='cooker.cgi?pkg=\0'>\0</a>#"g)
   1.187 +$(cat $broken | head -n 20 | sed s"#^[^']*#<a href='?pkg=\0'>\0</a>#"g)
   1.188  </pre>
   1.189  EOT
   1.190  
   1.191  		[ -s $blocked ] && cat <<EOT
   1.192  <h2 id="blocked">Blocked</h2>
   1.193  <pre>
   1.194 -$(cat $blocked | sed s"#^[^']*#<a href='cooker.cgi?pkg=\0'>\0</a>#"g)
   1.195 +$(cat $blocked | sed s"#^[^']*#<a href='?pkg=\0'>\0</a>#"g)
   1.196  </pre>
   1.197  EOT
   1.198