slitaz-pizza annotate web/pkgs.cgi @ rev 16

Add Gravatar support to main page, put activity at the bottom, smaller content width
author Christophe Lincoln <pankso@slitaz.org>
date Mon Mar 26 14:47:04 2012 +0200 (2012-03-26)
parents a5164f0bb461
children 1b124daccc19
rev   line source
pankso@7 1 #!/bin/sh
pankso@7 2 #
paul@9 3 # SliTaz Pizza CGI/web interface - Let's have a pizza :-)
pankso@7 4 # Packages step
pankso@7 5 #
pankso@7 6
pankso@7 7 . lib/libpizza
pankso@7 8
pankso@7 9 id="$(GET id)"
pankso@7 10 flavor="$(GET flavor)"
pankso@7 11 skel="$(GET skel)"
pankso@7 12 desc="$(GET desc)"
pankso@7 13 mail="$(GET mail)"
pankso@7 14 add="$(GET add)"
pankso@7 15 log="$tmpdir/slitaz-$id/distro.log"
pankso@7 16 list="$tmpdir/slitaz-$id/packages.list"
pankso@7 17
pankso@7 18 #
pankso@7 19 # Functions
pankso@7 20 #
pankso@7 21
pankso@7 22 list_pkgs() {
paul@9 23 # Pizza uses local packages synced with mirror each night.
pankso@7 24 pkgsdesc="$SLITAZ/$SLITAZ_VERSION/packages/packages.desc"
pankso@7 25 [ ! -f "$pkgsdesc" ] && echo "Missing: $pkgsdesc"
pankso@7 26 for pkg in $(cat $list)
pankso@7 27 do
pankso@7 28 IFS="|"
pankso@7 29 grep "^$pkg |" $pkgsdesc | cut -f 1,2,3 -d "|" | \
pankso@7 30 while read PACKAGE VERSION SHORT_DESC
pankso@7 31 do
pankso@7 32 cat << EOT
pankso@7 33 <tr>
pankso@7 34 <td><input type="checkbox" name="pkg" value="$PACKAGE" /></td>
pankso@7 35 <td>$PACKAGE</td>
pankso@7 36 <td>$VERSION</td>
pankso@7 37 <td>$SHORT_DESC</td>
pankso@7 38 </tr>
pankso@7 39 EOT
pankso@7 40 done
pankso@7 41 done
pankso@7 42 }
pankso@7 43
pankso@7 44 # Gen an empty receipt for new flavor.
pankso@7 45 empty_receipt() {
pankso@7 46 cat > $tmpdir/slitaz-$id/receipt << EOT
pankso@7 47 # SliTaz flavor receipt.
pankso@7 48
pankso@7 49 FLAVOR=""
pankso@7 50 SHORT_DESC=""
pankso@7 51 VERSION="$(date "+%Y%m%d")"
pankso@7 52 MAINTAINER=""
pankso@7 53
pankso@7 54 ID=""
pankso@7 55 SKEL=""
pankso@7 56
pankso@7 57 EOT
pankso@7 58 }
pankso@7 59
pankso@7 60 #
pankso@7 61 # Actions
pankso@7 62 #
pankso@7 63
pankso@7 64 case " $(GET) " in
pankso@7 65 *\ add\ *)
pankso@7 66 for pkg in $add
pankso@7 67 do
pankso@7 68 if ! grep -q ^${pkg}$ $list; then
pankso@7 69 echo "$pkg" >> $list
pankso@7 70 fi
pankso@7 71 done ;;
pankso@7 72 *\ rm\ *)
pankso@7 73 cmdline=$(echo ${QUERY_STRING#pkg=} | sed s'/&/ /g')
pankso@7 74 cmdline=${cmdline%id=*}
pankso@7 75 pkgs=$(echo $cmdline | sed -e s'/+/ /g' -e s'/pkg=//g' -e s/$cmd//)
pankso@7 76 for pkg in $pkgs
pankso@7 77 do
pankso@7 78 sed -i "/^${pkg}$/"d $list
pankso@7 79 done ;;
pankso@7 80 *)
pankso@7 81 # No space in flavor name please.
pankso@7 82 flavor=$(echo $flavor | sed s'/ //'g)
pankso@7 83 # Javascript can be disable in browser.
pankso@7 84 [ ! "$flavor" ] && echo "Missing flavor name" && exit 0
pankso@7 85 [ ! "$mail" ] && echo "Missing email address" && exit 0
pankso@7 86 [ ! "$skel" ] && echo "Missing SliTaz skeleton" && exit 0
pankso@7 87 [ ! "$desc" ] && echo "Missing short desciption" && exit 0
pankso@7 88 mkdir -p $tmpdir/slitaz-$id
pankso@7 89 cp -f $cache/packages.$skel $list
pankso@7 90 echo "Receipt created : $(date '+%Y-%m-%d %H:%M')" > $log
pankso@7 91 empty_receipt
pankso@7 92 sed -i \
pankso@7 93 -e s"/FLAVOR=.*/FLAVOR=\"slitaz-$flavor\"/" \
pankso@7 94 -e s"/MAINTAINER=.*/MAINTAINER=\"$mail\"/" \
pankso@7 95 -e s"/SKEL=.*/SKEL=\"$skel\"/" \
pankso@7 96 -e s"/SHORT_DESC=.*/SHORT_DESC=\"$desc\"/" \
pankso@7 97 -e s"/ID=.*/ID=\"$id\"/" $tmpdir/slitaz-$id/receipt ;;
pankso@7 98 esac
pankso@7 99
pankso@7 100 #
pankso@7 101 # Source the receipt and display page.
pankso@7 102 #
pankso@7 103 . $tmpdir/slitaz-$id/receipt
pankso@7 104
pankso@7 105 nb=$(cat $list | wc -l)
pankso@7 106 cat << EOT
pankso@7 107 <h2>Packages ($nb)</h2>
pankso@7 108
pankso@7 109 <form method="get" action="pkgs.cgi">
pankso@7 110 <table>
pankso@7 111 <tbody>
pankso@7 112 $(list_pkgs)
pankso@7 113 </tbody>
pankso@7 114 </table>
pankso@7 115 <div>
pankso@7 116 <input type="hidden" name="id" value="$id" />
pankso@7 117 <input type="submit" name="rm" value="$(gettext "Remove package(s)")">
pankso@7 118 </form>
pankso@7 119
pankso@7 120 <form method="get" action="pkgs.cgi" style="float: right;">
pankso@16 121 <input type="text" name="add" style="width: 400px;" />
pankso@7 122 <input type="hidden" name="id" value="$id" />
pankso@7 123 <input type="submit" name="pkgs" value="$(gettext "Add package(s)")">
pankso@7 124 </form>
pankso@7 125
pankso@7 126 <pre>
pankso@7 127 Uniq ID : $id
pankso@7 128 Flavor : $FLAVOR
pankso@7 129 Short desc : $SHORT_DESC
pankso@7 130 </pre>
pankso@7 131 <div class="next">
pankso@7 132 <form method="get" action="rootfs.cgi">
pankso@7 133 <input type="hidden" name="id" value="$id" />
pankso@7 134 <input type="submit" value="$(gettext "Continue")">
pankso@7 135 </form>
pankso@7 136 </div>
pankso@7 137 EOT
pankso@7 138
pankso@7 139 # HTML footer.
pankso@7 140 cat lib/footer.html
pankso@7 141
pankso@7 142 exit 0