slitaz-pizza annotate web/pkgs.cgi @ rev 27
Fix a few things in pkgs.cgi, we need a simple packages list for tazlito
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Tue Mar 27 00:45:40 2012 +0200 (2012-03-27) |
parents | a666d22cd751 |
children | a9e881b64c15 |
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 log="$tmpdir/slitaz-$id/distro.log" |
pankso@22 | 15 allpkgs="$SLITAZ/$SLITAZ_VERSION/packages/packages.desc" |
pankso@22 | 16 # Flavor pkgs list format: pkgname version " short desc " |
pankso@27 | 17 list="$tmpdir/slitaz-$id/packages.list" |
pankso@27 | 18 desc="$tmpdir/slitaz-$id/packages.desc" |
pankso@7 | 19 |
pankso@7 | 20 # |
pankso@7 | 21 # Functions |
pankso@7 | 22 # |
pankso@7 | 23 |
pankso@22 | 24 # Pizza uses local packages synced with mirror each night. |
pankso@7 | 25 list_pkgs() { |
pankso@22 | 26 [ ! -f "$list" ] && echo "Missing: $list" |
pankso@22 | 27 cat $list | while read PACKAGE VERSION SHORT_DESC |
pankso@7 | 28 do |
pankso@22 | 29 cat << EOT |
pankso@22 | 30 |
pankso@22 | 31 <tr> |
pankso@22 | 32 <td><input type="checkbox" name="pkg" value="$PACKAGE" /></td> |
pankso@22 | 33 <td>$PACKAGE</td> |
pankso@22 | 34 <td>$VERSION</td> |
pankso@22 | 35 <td>$SHORT_DESC</td> |
pankso@22 | 36 </tr> |
pankso@7 | 37 EOT |
pankso@7 | 38 done |
pankso@7 | 39 } |
pankso@7 | 40 |
pankso@7 | 41 # Gen an empty receipt for new flavor. |
pankso@7 | 42 empty_receipt() { |
pankso@7 | 43 cat > $tmpdir/slitaz-$id/receipt << EOT |
pankso@7 | 44 # SliTaz flavor receipt. |
pankso@7 | 45 |
pankso@7 | 46 FLAVOR="" |
pankso@7 | 47 SHORT_DESC="" |
pankso@7 | 48 VERSION="$(date "+%Y%m%d")" |
pankso@7 | 49 MAINTAINER="" |
pankso@7 | 50 |
pankso@7 | 51 ID="" |
pankso@7 | 52 SKEL="" |
pankso@7 | 53 |
pankso@7 | 54 EOT |
pankso@7 | 55 } |
pankso@7 | 56 |
pankso@22 | 57 # Search packages or desc in the local packages.desc |
pankso@22 | 58 # TODO: Html table with selection |
pankso@22 | 59 search_pkgs() { |
pankso@22 | 60 echo '<pre>' |
pankso@22 | 61 for pkg in $search |
pankso@22 | 62 do |
pankso@22 | 63 fgrep $pkg $allpkgs | cut -d "|" -f 1,2,3 |
pankso@22 | 64 done |
pankso@22 | 65 echo '</pre>' |
pankso@22 | 66 } |
pankso@22 | 67 |
pankso@7 | 68 # |
pankso@7 | 69 # Actions |
pankso@7 | 70 # |
pankso@7 | 71 |
pankso@7 | 72 case " $(GET) " in |
pankso@22 | 73 *\ search\ *) |
pankso@22 | 74 search="$(GET search)" |
pankso@22 | 75 notify "Searching for: $search" ;; |
pankso@7 | 76 *\ add\ *) |
pankso@22 | 77 add="$(GET add)" |
pankso@22 | 78 notify "Adding packages: $add" |
pankso@7 | 79 for pkg in $add |
pankso@7 | 80 do |
pankso@22 | 81 # Add pkg only if not yep in Pizza flavor pkgs list |
pankso@22 | 82 if ! grep -Eq "^($pkg|get-$pkg) " $list; then |
pankso@22 | 83 pkginfo=$(grep -E "^($pkg|get-$pkg) " $allpkgs | cut -f 1,2,3 -d "|") |
pankso@22 | 84 name=$(echo $pkginfo | cut -d "|" -f 1) |
pankso@22 | 85 vers=$(echo $pkginfo | cut -d "|" -f 2) |
pankso@22 | 86 desc=$(echo $pkginfo | cut -d "|" -f 3) |
pankso@27 | 87 echo "$name $vers \" $desc \"" >> $desc |
pankso@27 | 88 echo "$name" >> $list |
pankso@7 | 89 fi |
pankso@7 | 90 done ;; |
pankso@7 | 91 *\ rm\ *) |
pankso@7 | 92 cmdline=$(echo ${QUERY_STRING#pkg=} | sed s'/&/ /g') |
pankso@7 | 93 cmdline=${cmdline%id=*} |
pankso@7 | 94 pkgs=$(echo $cmdline | sed -e s'/+/ /g' -e s'/pkg=//g' -e s/$cmd//) |
pankso@7 | 95 for pkg in $pkgs |
pankso@7 | 96 do |
pankso@27 | 97 sed -i "/^${pkg} /"d $desc |
pankso@22 | 98 sed -i "/^${pkg} /"d $list |
pankso@7 | 99 done ;; |
pankso@7 | 100 *) |
pankso@7 | 101 # No space in flavor name please. |
pankso@7 | 102 flavor=$(echo $flavor | sed s'/ //'g) |
pankso@7 | 103 # Javascript can be disable in browser. |
pankso@7 | 104 [ ! "$flavor" ] && echo "Missing flavor name" && exit 0 |
pankso@7 | 105 [ ! "$mail" ] && echo "Missing email address" && exit 0 |
pankso@7 | 106 [ ! "$skel" ] && echo "Missing SliTaz skeleton" && exit 0 |
pankso@7 | 107 [ ! "$desc" ] && echo "Missing short desciption" && exit 0 |
pankso@22 | 108 notify "$(gettext "Creating receipt and packages list")" |
pankso@7 | 109 mkdir -p $tmpdir/slitaz-$id |
pankso@27 | 110 # Use a pkg desc for the web interface and a simple one tazlito. |
pankso@22 | 111 cp -f $hgflavors/$skel/packages.desc $list |
pankso@27 | 112 cp -f $hgflavors/$skel/packages.list $tmpdir/slitaz-$id/packages.list |
pankso@7 | 113 empty_receipt |
pankso@7 | 114 sed -i \ |
pankso@7 | 115 -e s"/FLAVOR=.*/FLAVOR=\"slitaz-$flavor\"/" \ |
pankso@7 | 116 -e s"/MAINTAINER=.*/MAINTAINER=\"$mail\"/" \ |
pankso@7 | 117 -e s"/SKEL=.*/SKEL=\"$skel\"/" \ |
pankso@7 | 118 -e s"/SHORT_DESC=.*/SHORT_DESC=\"$desc\"/" \ |
pankso@27 | 119 -e s"/ID=.*/ID=\"$id\"/" $tmpdir/slitaz-$id/receipt |
pankso@27 | 120 echo "Receipt created : $(date '+%Y-%m-%d %H:%M')" > $log ;; |
pankso@7 | 121 esac |
pankso@7 | 122 |
pankso@7 | 123 # |
pankso@7 | 124 # Source the receipt and display page. |
pankso@7 | 125 # |
pankso@7 | 126 . $tmpdir/slitaz-$id/receipt |
pankso@7 | 127 |
pankso@7 | 128 nb=$(cat $list | wc -l) |
pankso@7 | 129 cat << EOT |
pankso@7 | 130 <h2>Packages ($nb)</h2> |
pankso@7 | 131 |
pankso@7 | 132 <form method="get" action="pkgs.cgi"> |
pankso@22 | 133 <div id="packages"> |
pankso@7 | 134 <table> |
pankso@7 | 135 <tbody> |
pankso@7 | 136 $(list_pkgs) |
pankso@7 | 137 </tbody> |
pankso@7 | 138 </table> |
pankso@22 | 139 </div> |
pankso@7 | 140 <input type="hidden" name="id" value="$id" /> |
pankso@22 | 141 <input type="submit" name="rm" value="$(gettext "Remove package(s)")" /> |
pankso@7 | 142 </form> |
pankso@7 | 143 |
pankso@22 | 144 <form method="get" action="pkgs.cgi"> |
pankso@22 | 145 <div style="float: right;"> |
pankso@16 | 146 <input type="text" name="add" style="width: 400px;" /> |
pankso@7 | 147 <input type="hidden" name="id" value="$id" /> |
pankso@22 | 148 <input type="submit" name="pkgs" value="$(gettext "Add package(s)")" /> |
pankso@22 | 149 </div> |
pankso@22 | 150 </form> |
pankso@22 | 151 |
pankso@22 | 152 <form method="get" action="pkgs.cgi"> |
pankso@25 | 153 <p> |
pankso@22 | 154 |
pankso@22 | 155 $(gettext "Here you can add or remove some packages from your flavor. You |
pankso@22 | 156 can also search for packages name and description to find a package name") |
pankso@22 | 157 |
pankso@22 | 158 </p> |
pankso@22 | 159 <input type="text" name="search" style="width: 300px;" /> |
pankso@22 | 160 <input type="hidden" name="id" value="$id" /> |
pankso@22 | 161 <input type="submit" value="$(gettext "Search")" /> |
pankso@22 | 162 <div id="pkgs-search"> |
pankso@22 | 163 $([ "$search" ] && search_pkgs) |
pankso@22 | 164 </div> |
pankso@7 | 165 </form> |
pankso@7 | 166 |
pankso@7 | 167 <pre> |
pankso@7 | 168 Uniq ID : $id |
pankso@7 | 169 Flavor : $FLAVOR |
pankso@7 | 170 Short desc : $SHORT_DESC |
pankso@7 | 171 </pre> |
pankso@25 | 172 |
pankso@25 | 173 <div class="next"> |
pankso@25 | 174 <form method="get" action="rootfs.cgi"> |
pankso@25 | 175 <input type="hidden" name="id" value="$id" /> |
pankso@25 | 176 <input type="submit" value="$(gettext "Continue")"> |
pankso@25 | 177 </form> |
pankso@25 | 178 </div> |
pankso@25 | 179 |
pankso@7 | 180 EOT |
pankso@7 | 181 |
pankso@7 | 182 # HTML footer. |
pankso@7 | 183 cat lib/footer.html |
pankso@7 | 184 |
pankso@7 | 185 exit 0 |