slitaz-pizza diff web/pkgs.cgi @ rev 7
Add the web interface
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Sat Mar 24 23:12:44 2012 +0100 (2012-03-24) |
parents | |
children | a5164f0bb461 |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/web/pkgs.cgi Sat Mar 24 23:12:44 2012 +0100 1.3 @@ -0,0 +1,142 @@ 1.4 +#!/bin/sh 1.5 +# 1.6 +# SliTaz Pizza CGI/web interface - Let's me have a pizza :-) 1.7 +# Packages step 1.8 +# 1.9 + 1.10 +. lib/libpizza 1.11 + 1.12 +id="$(GET id)" 1.13 +flavor="$(GET flavor)" 1.14 +skel="$(GET skel)" 1.15 +desc="$(GET desc)" 1.16 +mail="$(GET mail)" 1.17 +add="$(GET add)" 1.18 +log="$tmpdir/slitaz-$id/distro.log" 1.19 +list="$tmpdir/slitaz-$id/packages.list" 1.20 + 1.21 +# 1.22 +# Functions 1.23 +# 1.24 + 1.25 +list_pkgs() { 1.26 + # Pizza use local packages synced with mirror each night. 1.27 + pkgsdesc="$SLITAZ/$SLITAZ_VERSION/packages/packages.desc" 1.28 + [ ! -f "$pkgsdesc" ] && echo "Missing: $pkgsdesc" 1.29 + for pkg in $(cat $list) 1.30 + do 1.31 + IFS="|" 1.32 + grep "^$pkg |" $pkgsdesc | cut -f 1,2,3 -d "|" | \ 1.33 + while read PACKAGE VERSION SHORT_DESC 1.34 + do 1.35 + cat << EOT 1.36 +<tr> 1.37 + <td><input type="checkbox" name="pkg" value="$PACKAGE" /></td> 1.38 + <td>$PACKAGE</td> 1.39 + <td>$VERSION</td> 1.40 + <td>$SHORT_DESC</td> 1.41 +</tr> 1.42 +EOT 1.43 + done 1.44 + done 1.45 +} 1.46 + 1.47 +# Gen an empty receipt for new flavor. 1.48 +empty_receipt() { 1.49 + cat > $tmpdir/slitaz-$id/receipt << EOT 1.50 +# SliTaz flavor receipt. 1.51 + 1.52 +FLAVOR="" 1.53 +SHORT_DESC="" 1.54 +VERSION="$(date "+%Y%m%d")" 1.55 +MAINTAINER="" 1.56 + 1.57 +ID="" 1.58 +SKEL="" 1.59 + 1.60 +EOT 1.61 +} 1.62 + 1.63 +# 1.64 +# Actions 1.65 +# 1.66 + 1.67 +case " $(GET) " in 1.68 + *\ add\ *) 1.69 + for pkg in $add 1.70 + do 1.71 + if ! grep -q ^${pkg}$ $list; then 1.72 + echo "$pkg" >> $list 1.73 + fi 1.74 + done ;; 1.75 + *\ rm\ *) 1.76 + cmdline=$(echo ${QUERY_STRING#pkg=} | sed s'/&/ /g') 1.77 + cmdline=${cmdline%id=*} 1.78 + pkgs=$(echo $cmdline | sed -e s'/+/ /g' -e s'/pkg=//g' -e s/$cmd//) 1.79 + for pkg in $pkgs 1.80 + do 1.81 + sed -i "/^${pkg}$/"d $list 1.82 + done ;; 1.83 + *) 1.84 + # No space in flavor name please. 1.85 + flavor=$(echo $flavor | sed s'/ //'g) 1.86 + # Javascript can be disable in browser. 1.87 + [ ! "$flavor" ] && echo "Missing flavor name" && exit 0 1.88 + [ ! "$mail" ] && echo "Missing email address" && exit 0 1.89 + [ ! "$skel" ] && echo "Missing SliTaz skeleton" && exit 0 1.90 + [ ! "$desc" ] && echo "Missing short desciption" && exit 0 1.91 + mkdir -p $tmpdir/slitaz-$id 1.92 + cp -f $cache/packages.$skel $list 1.93 + echo "Receipt created : $(date '+%Y-%m-%d %H:%M')" > $log 1.94 + empty_receipt 1.95 + sed -i \ 1.96 + -e s"/FLAVOR=.*/FLAVOR=\"slitaz-$flavor\"/" \ 1.97 + -e s"/MAINTAINER=.*/MAINTAINER=\"$mail\"/" \ 1.98 + -e s"/SKEL=.*/SKEL=\"$skel\"/" \ 1.99 + -e s"/SHORT_DESC=.*/SHORT_DESC=\"$desc\"/" \ 1.100 + -e s"/ID=.*/ID=\"$id\"/" $tmpdir/slitaz-$id/receipt ;; 1.101 +esac 1.102 + 1.103 +# 1.104 +# Source the receipt and display page. 1.105 +# 1.106 +. $tmpdir/slitaz-$id/receipt 1.107 + 1.108 +nb=$(cat $list | wc -l) 1.109 +cat << EOT 1.110 +<h2>Packages ($nb)</h2> 1.111 + 1.112 +<form method="get" action="pkgs.cgi"> 1.113 + <table> 1.114 + <tbody> 1.115 + $(list_pkgs) 1.116 + </tbody> 1.117 + </table> 1.118 + <div> 1.119 + <input type="hidden" name="id" value="$id" /> 1.120 + <input type="submit" name="rm" value="$(gettext "Remove package(s)")"> 1.121 +</form> 1.122 + 1.123 +<form method="get" action="pkgs.cgi" style="float: right;"> 1.124 + <input type="text" name="add" /> 1.125 + <input type="hidden" name="id" value="$id" /> 1.126 + <input type="submit" name="pkgs" value="$(gettext "Add package(s)")"> 1.127 +</form> 1.128 + 1.129 +<pre> 1.130 +Uniq ID : $id 1.131 +Flavor : $FLAVOR 1.132 +Short desc : $SHORT_DESC 1.133 +</pre> 1.134 +<div class="next"> 1.135 + <form method="get" action="rootfs.cgi"> 1.136 + <input type="hidden" name="id" value="$id" /> 1.137 + <input type="submit" value="$(gettext "Continue")"> 1.138 + </form> 1.139 +</div> 1.140 +EOT 1.141 + 1.142 +# HTML footer. 1.143 +cat lib/footer.html 1.144 + 1.145 +exit 0