slitaz-pizza annotate web/pkgs.cgi @ rev 40
Add HTML FAQ
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Tue Mar 27 11:32:23 2012 +0200 (2012-03-27) |
parents | ce872f64c4a7 |
children | 96974e330b86 |
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@29 | 15 # Flavor pkgs desc list format: pkgname version " short desc " |
pankso@22 | 16 allpkgs="$SLITAZ/$SLITAZ_VERSION/packages/packages.desc" |
pankso@27 | 17 list="$tmpdir/slitaz-$id/packages.list" |
pankso@29 | 18 pkgsdesc="$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@29 | 26 [ ! -f "$list" ] && echo "Missing: $pkgsdesc" |
pankso@29 | 27 cat $pkgsdesc | 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@40 | 87 echo "$pkg $vers \" $desc \"" >> $pkgsdesc |
pankso@40 | 88 echo "$pkg" >> $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@29 | 95 notify "Removing packages: $pkgs" |
pankso@7 | 96 for pkg in $pkgs |
pankso@7 | 97 do |
pankso@29 | 98 sed -i "/^${pkg} /"d $pkgsdesc |
pankso@22 | 99 sed -i "/^${pkg} /"d $list |
pankso@7 | 100 done ;; |
pankso@7 | 101 *) |
pankso@7 | 102 # No space in flavor name please. |
pankso@7 | 103 flavor=$(echo $flavor | sed s'/ //'g) |
pankso@7 | 104 # Javascript can be disable in browser. |
pankso@7 | 105 [ ! "$flavor" ] && echo "Missing flavor name" && exit 0 |
pankso@7 | 106 [ ! "$mail" ] && echo "Missing email address" && exit 0 |
pankso@7 | 107 [ ! "$skel" ] && echo "Missing SliTaz skeleton" && exit 0 |
pankso@7 | 108 [ ! "$desc" ] && echo "Missing short desciption" && exit 0 |
pankso@22 | 109 notify "$(gettext "Creating receipt and packages list")" |
pankso@7 | 110 mkdir -p $tmpdir/slitaz-$id |
pankso@27 | 111 # Use a pkg desc for the web interface and a simple one tazlito. |
pankso@29 | 112 cp -f $hgflavors/$skel/packages.desc $pkgsdesc |
pankso@28 | 113 cp -f $hgflavors/$skel/packages.list $list |
pankso@28 | 114 [ -d "$hgflavors/$skel/rootfs" ] && \ |
pankso@28 | 115 cp -a $hgflavors/$skel/rootfs $tmpdir/slitaz-$id |
pankso@7 | 116 empty_receipt |
pankso@7 | 117 sed -i \ |
pankso@7 | 118 -e s"/FLAVOR=.*/FLAVOR=\"slitaz-$flavor\"/" \ |
pankso@7 | 119 -e s"/MAINTAINER=.*/MAINTAINER=\"$mail\"/" \ |
pankso@7 | 120 -e s"/SKEL=.*/SKEL=\"$skel\"/" \ |
pankso@7 | 121 -e s"/SHORT_DESC=.*/SHORT_DESC=\"$desc\"/" \ |
pankso@27 | 122 -e s"/ID=.*/ID=\"$id\"/" $tmpdir/slitaz-$id/receipt |
pankso@27 | 123 echo "Receipt created : $(date '+%Y-%m-%d %H:%M')" > $log ;; |
pankso@7 | 124 esac |
pankso@7 | 125 |
pankso@7 | 126 # |
pankso@7 | 127 # Source the receipt and display page. |
pankso@7 | 128 # |
pankso@7 | 129 . $tmpdir/slitaz-$id/receipt |
pankso@7 | 130 |
pankso@7 | 131 nb=$(cat $list | wc -l) |
pankso@7 | 132 cat << EOT |
pankso@7 | 133 <h2>Packages ($nb)</h2> |
pankso@7 | 134 |
pankso@7 | 135 <form method="get" action="pkgs.cgi"> |
pankso@22 | 136 <div id="packages"> |
pankso@7 | 137 <table> |
pankso@7 | 138 <tbody> |
pankso@7 | 139 $(list_pkgs) |
pankso@7 | 140 </tbody> |
pankso@7 | 141 </table> |
pankso@22 | 142 </div> |
pankso@7 | 143 <input type="hidden" name="id" value="$id" /> |
pankso@22 | 144 <input type="submit" name="rm" value="$(gettext "Remove package(s)")" /> |
pankso@7 | 145 </form> |
pankso@7 | 146 |
pankso@22 | 147 <form method="get" action="pkgs.cgi"> |
pankso@22 | 148 <div style="float: right;"> |
pankso@16 | 149 <input type="text" name="add" style="width: 400px;" /> |
pankso@7 | 150 <input type="hidden" name="id" value="$id" /> |
pankso@22 | 151 <input type="submit" name="pkgs" value="$(gettext "Add package(s)")" /> |
pankso@22 | 152 </div> |
pankso@22 | 153 </form> |
pankso@22 | 154 |
pankso@22 | 155 <form method="get" action="pkgs.cgi"> |
pankso@25 | 156 <p> |
pankso@22 | 157 |
pankso@22 | 158 $(gettext "Here you can add or remove some packages from your flavor. You |
pankso@22 | 159 can also search for packages name and description to find a package name") |
pankso@22 | 160 |
pankso@22 | 161 </p> |
pankso@22 | 162 <input type="text" name="search" style="width: 300px;" /> |
pankso@22 | 163 <input type="hidden" name="id" value="$id" /> |
pankso@22 | 164 <input type="submit" value="$(gettext "Search")" /> |
pankso@22 | 165 <div id="pkgs-search"> |
pankso@22 | 166 $([ "$search" ] && search_pkgs) |
pankso@22 | 167 </div> |
pankso@7 | 168 </form> |
pankso@7 | 169 |
pankso@7 | 170 <pre> |
pankso@7 | 171 Uniq ID : $id |
pankso@7 | 172 Flavor : $FLAVOR |
pankso@7 | 173 Short desc : $SHORT_DESC |
pankso@7 | 174 </pre> |
pankso@25 | 175 |
pankso@25 | 176 <div class="next"> |
pankso@25 | 177 <form method="get" action="rootfs.cgi"> |
pankso@25 | 178 <input type="hidden" name="id" value="$id" /> |
pankso@25 | 179 <input type="submit" value="$(gettext "Continue")"> |
pankso@25 | 180 </form> |
pankso@25 | 181 </div> |
pankso@25 | 182 |
pankso@7 | 183 EOT |
pankso@7 | 184 |
pankso@7 | 185 # HTML footer. |
pankso@7 | 186 cat lib/footer.html |
pankso@7 | 187 |
pankso@7 | 188 exit 0 |