slitaz-pizza annotate web/pizza.cgi @ rev 105
Fix i18n
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Sat Jan 25 14:21:08 2014 +0100 (2014-01-25) |
parents | e4bf1581a71b |
children | c83842a21724 |
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 # Please KISS, it is important and keep speed in mind. Thanks, Pankso. |
pankso@7 | 5 # |
pankso@7 | 6 |
pankso@7 | 7 # Output a RSS feed of latest build isos. |
pankso@7 | 8 if [ "$QUERY_STRING" == "rss" ]; then |
pankso@7 | 9 . /etc/slitaz/pizza.conf |
pankso@7 | 10 pubdate=$(date "+%a, %d %b %Y %X") |
pankso@7 | 11 cat << EOT |
pankso@7 | 12 Content-Type: text/xml |
pankso@7 | 13 |
pankso@7 | 14 <?xml version="1.0" encoding="utf-8" ?> |
pankso@7 | 15 <rss version="2.0"> |
pankso@7 | 16 <channel> |
pankso@7 | 17 <title>SliTaz Pizza</title> |
pankso@7 | 18 <description>The SliTaz Pizza cooker feed</description> |
pankso@7 | 19 <link>$PIZZA_URL</link> |
pankso@7 | 20 <lastBuildDate>$pubdate GMT</lastBuildDate> |
pankso@7 | 21 <pubDate>$pubdate GMT</pubDate> |
pankso@7 | 22 EOT |
pankso@7 | 23 for rss in $(ls -1t $PIZZA/chroot${SLITAZ}/xml/*.xml | head -n 12) |
pankso@7 | 24 do |
pankso@7 | 25 cat $rss |
pankso@7 | 26 done |
pankso@7 | 27 cat << EOT |
pankso@7 | 28 </channel> |
pankso@7 | 29 </rss> |
pankso@7 | 30 EOT |
pankso@7 | 31 exit 0 |
pankso@7 | 32 fi |
pankso@7 | 33 |
pankso@7 | 34 # Content negotiation for Gettext |
pankso@7 | 35 IFS="," |
pankso@7 | 36 for lang in $HTTP_ACCEPT_LANGUAGE |
pankso@7 | 37 do |
pankso@7 | 38 lang=${lang%;*} lang=${lang# } lang=${lang%-*} |
pankso@7 | 39 case "$lang" in |
pankso@105 | 40 en) lang="C" && break ;; |
pankso@105 | 41 fr) lang="fr_FR" && break ;; |
pankso@105 | 42 pt) lang="pt_BR" && break ;; |
pankso@105 | 43 ru) lang="ru_RU" && break ;; |
pankso@105 | 44 sv) lang="sv_SE" && break ;; |
pankso@105 | 45 pl) lang="pl_PL" && break ;; |
pankso@105 | 46 el) lang="el_GR" && break ;; |
pankso@7 | 47 esac |
pankso@7 | 48 done |
pankso@7 | 49 unset IFS |
pankso@7 | 50 export LANG=$lang LC_ALL=$lang |
pankso@7 | 51 |
pankso@7 | 52 # Internationalization: $(gettext "") |
pankso@7 | 53 . /usr/bin/gettext.sh |
pankso@7 | 54 TEXTDOMAIN='pizza' |
pankso@7 | 55 export TEXTDOMAIN |
pankso@7 | 56 |
pankso@7 | 57 . lib/libpizza |
pankso@7 | 58 |
pankso@7 | 59 # |
pankso@7 | 60 # Commands |
pankso@7 | 61 # |
pankso@7 | 62 |
pankso@7 | 63 case " $(GET) " in |
pankso@7 | 64 *\ start\ *) |
pankso@7 | 65 # |
pankso@7 | 66 # First step |
pankso@7 | 67 # |
pankso@7 | 68 date=$(date "+%Y%m%d") |
pankso@7 | 69 id=$date-$$ |
pankso@7 | 70 cat << EOT |
pankso@7 | 71 <h2>$(gettext "First step")</h2> |
pankso@7 | 72 <p> |
paul@9 | 73 $(gettext "Choose your distribution name and the one you want to use as |
paul@9 | 74 base. We need your mail to notify you when your SliTaz Flavor is built |
paul@9 | 75 and if anything goes wrong.") |
pankso@7 | 76 </p> |
pankso@7 | 77 <form method="get" action="pkgs.cgi" name="pizza" onsubmit="return checkForm();"> |
pankso@7 | 78 <table> |
pankso@7 | 79 <tbody> |
pankso@7 | 80 <tr> |
pankso@7 | 81 <td>$(gettext "Flavor name")</td> |
erjo@77 | 82 <td><input type="text" name="flavor" size="40" maxlength="25" /></td> |
pankso@7 | 83 </tr> |
pankso@7 | 84 <tr> |
pankso@7 | 85 <td>$(gettext "Short description")</td> |
erjo@66 | 86 <td><input type="text" name="desc" size="40" maxlength="60" /></td> |
pankso@7 | 87 </tr> |
pankso@7 | 88 <tr> |
pankso@7 | 89 <td>$(gettext "Email")</td> |
pankso@7 | 90 <td><input type="text" name="mail" size="40" /></td> |
pankso@7 | 91 </tr> |
pankso@7 | 92 <tr> |
pankso@7 | 93 <td>$(gettext "Based on")</td> |
pankso@7 | 94 <td> |
pankso@7 | 95 <select name="skel"> |
pankso@7 | 96 <option value="base"> |
pankso@7 | 97 Base - $(gettext "Text mode system")</option> |
pankso@7 | 98 <option value="justx"> |
pankso@7 | 99 Justx - $(gettext "X without GTK or QT")</option> |
pankso@7 | 100 <option value="gtkonly"> |
pankso@7 | 101 Gtkonly - $(gettext "Clean GTK desktop")</option> |
pankso@7 | 102 <option value="core"> |
pankso@7 | 103 Core - $(gettext "Default SliTaz desktop")</option> |
pankso@7 | 104 </select> |
pankso@7 | 105 </td> |
pankso@7 | 106 </tr> |
pankso@7 | 107 </tbody> |
pankso@7 | 108 </table> |
pankso@7 | 109 <pre> |
pankso@7 | 110 Uniq ID : $id |
pankso@7 | 111 </pre> |
pankso@7 | 112 <div class="next"> |
pankso@7 | 113 <input type="hidden" name="id" value="$id" /> |
pankso@7 | 114 <input type="submit" value="$(gettext "Continue")"> |
pankso@7 | 115 </div> |
pankso@7 | 116 </form> |
pankso@7 | 117 EOT |
pankso@7 | 118 ;; |
pankso@7 | 119 *\ gen\ *) |
pankso@7 | 120 # |
pankso@7 | 121 # Generate step |
pankso@7 | 122 # |
pankso@7 | 123 id="$(GET id)" |
pankso@7 | 124 . $tmpdir/slitaz-$id/receipt |
pankso@7 | 125 addfiles=$(find $tmpdir/slitaz-$id/addfiles -type f | wc -l) |
pankso@7 | 126 [ "$addfiles" ] || addfiles=0 |
pankso@7 | 127 packages=$(cat $tmpdir/slitaz-$id/packages.list | wc -l) |
pankso@7 | 128 cat << EOT |
pankso@7 | 129 <h2>$(gettext "Generate")</h2> |
pankso@7 | 130 <p> |
pankso@23 | 131 $(gettext "Last chance to stop process or start over. Next step will pack |
pankso@23 | 132 your flavor and add it to the build queue. Here you can also add a note to |
pankso@23 | 133 your receipt flavor, this will be displayed on your flavor ID page and |
pankso@23 | 134 can be used to give more info to other users and SliTaz developers.") |
pankso@7 | 135 </p> |
pankso@23 | 136 |
pankso@7 | 137 <pre> |
pankso@7 | 138 Uniq ID : $id |
pankso@7 | 139 Flavor : $FLAVOR |
pankso@7 | 140 Short desc : $SHORT_DESC |
pankso@7 | 141 Maintainer : $MAINTAINER |
pankso@7 | 142 Packages : $packages |
pankso@7 | 143 Addfiles : $addfiles |
pankso@7 | 144 </pre> |
pankso@7 | 145 <form method="get" action="./"> |
pankso@7 | 146 <div class="box"> |
pankso@7 | 147 Note: |
pankso@7 | 148 <input type="text" name="note" style="width: 720px;" /> |
pankso@7 | 149 </div> |
pankso@7 | 150 <div class="next"> |
pankso@7 | 151 <input type="submit" name="cancel" value="$(gettext "Cancel")"> |
pankso@7 | 152 <input type="hidden" name="addfiles" value="$addfiles" /> |
pankso@7 | 153 <input type="hidden" name="id" value="$id" /> |
pankso@7 | 154 <input type="submit" name="pack" value="$(gettext "Build flavor")"> |
pankso@7 | 155 </div> |
pankso@7 | 156 </form> |
pankso@7 | 157 EOT |
pankso@7 | 158 ;; |
pankso@7 | 159 *\ cancel\ *) |
pankso@7 | 160 id="$(GET id)" |
pankso@23 | 161 echo "<p>$(gettext "Removing temporary files for:") $id</p>" |
pankso@7 | 162 [ -d "$tmpdir/slitaz-$id" ] && rm -rf $tmpdir/slitaz-$id/ |
pankso@7 | 163 cat << EOT |
pankso@7 | 164 <form method="get" action="./"> |
pankso@7 | 165 <input type="submit" name="start" value="$(gettext "Start over")"> |
pankso@7 | 166 </form> |
pankso@7 | 167 EOT |
pankso@7 | 168 ;; |
pankso@7 | 169 *\ pack\ *) |
pankso@7 | 170 # |
pankso@7 | 171 # Pack distro step |
pankso@7 | 172 # |
pankso@7 | 173 id="$(GET id)" |
pankso@7 | 174 receipt="$tmpdir/slitaz-$id/receipt" |
pankso@7 | 175 addfiles="$(GET addfiles)" |
pankso@7 | 176 log="$tmpdir/slitaz-$id/distro.log" |
pankso@7 | 177 note="$(GET note)" |
pankso@7 | 178 inqueue=$(ls $queue | wc -l) |
pankso@7 | 179 . $receipt |
pankso@7 | 180 cat << EOT |
pankso@7 | 181 <h2>$(gettext "Packing:") $FLAVOR</h2> |
pankso@7 | 182 <pre> |
pankso@7 | 183 EOT |
pankso@7 | 184 if ! fgrep ADDFILES $receipt; then |
pankso@7 | 185 echo "ADDFILES=\"$addfiles\"" >> $receipt |
pankso@7 | 186 fi |
pankso@7 | 187 if ! fgrep NOTE $receipt; then |
pascal@91 | 188 echo "NOTE=\"$note\"" | \ |
pascal@92 | 189 sed 's/\\/\\\\/g;s/\$/\\$/g;s/`/\\`/g' >> $receipt |
pankso@7 | 190 fi |
pankso@7 | 191 |
pankso@7 | 192 # The rootcd README |
pankso@7 | 193 echo -n "Creating SliTaz cdrom README..." |
pankso@7 | 194 date=$(date '+%Y-%m-%d %H:%M') |
pankso@7 | 195 mkdir -p $tmpdir/slitaz-$id/rootcd |
pankso@7 | 196 cp $DATA/README.distro $tmpdir/slitaz-$id/rootcd/README |
pankso@7 | 197 sed -i s"/_DATE_/$date/" $tmpdir/slitaz-$id/rootcd/README |
pankso@7 | 198 status |
pankso@7 | 199 |
pankso@7 | 200 echo -n "Creating flavor tarball..." |
pankso@7 | 201 cd $tmpdir && tar cjf $FLAVOR.tar.bz2 slitaz-$id |
pankso@7 | 202 mkdir -p $public/slitaz-$id |
pankso@7 | 203 mv $FLAVOR.tar.bz2 $public/slitaz-$id |
pankso@7 | 204 status |
pankso@7 | 205 |
pankso@7 | 206 # Keep a public receipt copy and move everything from tmp to queue. |
pankso@7 | 207 echo "Flavor packed : $(date '+%Y-%m-%d %H:%M')" | tee -a $log |
pankso@7 | 208 echo -n "Moving $id to Pizza build queue..." |
pankso@7 | 209 mv -f $tmpdir/slitaz-$id/distro.log $public/slitaz-$id |
pankso@7 | 210 cp -f $tmpdir/slitaz-$id/receipt $public/slitaz-$id |
pankso@7 | 211 mv $tmpdir/slitaz-$id $queue |
pankso@7 | 212 status |
pankso@7 | 213 |
pankso@7 | 214 if [ "$inqueue" == "1" ]; then |
pankso@7 | 215 gettext "Your ISO will be built on next Pizza Bot run" |
pankso@7 | 216 else |
paul@63 | 217 eval_gettext "There are \$inqueue flavors in queue" |
pankso@7 | 218 fi |
pankso@7 | 219 echo "" |
pankso@10 | 220 echo "New flavor added to queue: <a href='?id=$id'>$id</a> ($FLAVOR)" | log |
pankso@7 | 221 cat << EOT |
pankso@7 | 222 </pre> |
pankso@7 | 223 <div> |
pankso@7 | 224 <img src="images/archive.png" alt="[ tarball ]" /> |
pankso@7 | 225 $(gettext "Download tarball: ") |
pankso@7 | 226 <a href="public/slitaz-$id/$FLAVOR.tar.bz2">$FLAVOR.tar.bz2</a> |
pankso@7 | 227 - Browse <a href="public/slitaz-$id/">the flavor</a> |
pankso@7 | 228 </div> |
pankso@7 | 229 <div class="next"> |
pankso@7 | 230 <form method="get" action="./"> |
pankso@7 | 231 <input type="hidden" name="id" value="$id" /> |
pankso@7 | 232 <input type="submit" value="$(gettext "Status")"> |
pankso@7 | 233 </form> |
pankso@7 | 234 </div> |
pankso@7 | 235 EOT |
pankso@7 | 236 ;; |
pankso@7 | 237 *\ id\ *) |
pankso@7 | 238 # |
pankso@7 | 239 # ID Status page |
pankso@7 | 240 # |
pankso@7 | 241 id="$(GET id)" |
pankso@7 | 242 [ -f "$queue/slitaz-$id/receipt" ] && . $queue/slitaz-$id/receipt |
pankso@7 | 243 [ -f "public/slitaz-$id/receipt" ] && . public/slitaz-$id/receipt |
pankso@7 | 244 log="$public/slitaz-$id/distro.log" |
pankso@7 | 245 if [ ! -d "public/slitaz-$id" ]; then |
paul@9 | 246 echo "Sorry, can't find flavor ID: $id" |
pankso@7 | 247 cat lib/footer.html && exit 0 |
pankso@7 | 248 fi |
pankso@7 | 249 if [ -f "$public/slitaz-$id/$FLAVOR.iso" ]; then |
pankso@7 | 250 dir="public/slitaz-$id" |
pankso@7 | 251 list="$dir/packages.list" |
pankso@7 | 252 iso="$dir/$FLAVOR.iso" |
pankso@7 | 253 msg="$(gettext "Download ISO:") <a href='$dir/$FLAVOR.iso'>$FLAVOR.iso</a> |
pankso@7 | 254 [ <a href='$dir/$FLAVOR.md5'>md5</a> ]" |
pankso@7 | 255 else |
pankso@7 | 256 list="$queue/slitaz-$id/packages.list" |
pankso@7 | 257 msg="$(gettext "Flavor is building or still in the build queue")" |
pankso@7 | 258 fi |
pankso@7 | 259 pkgslist=$(cat $list | wc -l) |
pankso@7 | 260 pkgsinst=$(cat $installed | wc -l) |
pankso@7 | 261 [ "$pkgsinst" ] || pkgsinst=0 |
pankso@7 | 262 [ "$ISO_SIZE" ] || ISO_SIZE="N/A" |
pankso@7 | 263 [ "$ROOTFS_SIZE" ] || ROOTFS_SIZE="N/A" |
pankso@7 | 264 cat << EOT |
pankso@7 | 265 <h2>$(gettext "Status for:") $FLAVOR</h2> |
pankso@14 | 266 <div> |
pankso@14 | 267 $(get_gravatar $MAINTAINER) $(gettext "Flavor description:") $SHORT_DESC |
pankso@14 | 268 </div> |
pankso@7 | 269 <pre> |
pankso@7 | 270 Uniq ID : $id |
pankso@7 | 271 Flavor : $FLAVOR |
pankso@7 | 272 Packages : $pkgslist in list - $pkgsinst installed |
pankso@7 | 273 Rootfs size : $ROOTFS_SIZE |
pankso@7 | 274 ISO size : $ISO_SIZE |
pankso@7 | 275 </pre> |
pankso@7 | 276 |
pankso@7 | 277 <div> |
pankso@7 | 278 <img src="images/iso.png" alt="[ iso ]" /> $(echo $msg) |
pankso@7 | 279 </div> |
pankso@7 | 280 <div> |
pankso@7 | 281 <img src="images/archive.png" alt="[ tarball ]" /> |
pankso@7 | 282 $(gettext "Download tarball:") |
pankso@7 | 283 <a href="public/slitaz-$id/$FLAVOR.tar.bz2">$FLAVOR.tar.bz2</a> |
pankso@7 | 284 EOT |
pankso@7 | 285 if [ -f "$public/slitaz-$id/$FLAVOR.flavor" ]; then |
pankso@7 | 286 cat << EOT |
pankso@7 | 287 - Flavor file: <a href="public/slitaz-$id/$FLAVOR.flavor">$FLAVOR.flavor</a> |
pankso@7 | 288 EOT |
pankso@7 | 289 fi |
pankso@7 | 290 cat << EOT |
pankso@7 | 291 - Browse <a href="public/slitaz-$id/">the flavor</a> |
pankso@7 | 292 </div> |
pankso@7 | 293 EOT |
pankso@7 | 294 if [ "$NOTE" ]; then |
pankso@7 | 295 echo "<div class="note">$NOTE</div>" |
pankso@7 | 296 fi |
pankso@7 | 297 if [ -f "$log" ]; then |
pankso@7 | 298 echo '<h2>Distro log</h2>' |
pankso@7 | 299 echo '<pre>' |
pankso@7 | 300 fgrep 'Build time' $log |
pankso@7 | 301 cat $log | highlighter log |
pankso@7 | 302 echo '</pre>' |
pankso@7 | 303 fi ;; |
pankso@7 | 304 *\ help\ *) |
pankso@7 | 305 echo "<h2>$(gettext "Help")</h2>" |
pankso@42 | 306 cat /usr/share/doc/pizza/help.en.html |
pankso@40 | 307 cat /usr/share/doc/pizza/faq.en.html |
pankso@43 | 308 echo '<h3>README</h3>' |
pankso@7 | 309 echo '<pre>' |
pankso@7 | 310 cat /usr/share/doc/pizza/README |
pankso@7 | 311 echo '</pre>' ;; |
pankso@7 | 312 *\ info\ *) |
pankso@7 | 313 # English only :-) |
pankso@7 | 314 if mount | fgrep -q slitaz/public; then |
pankso@7 | 315 mounted="Public is mounted" |
pankso@7 | 316 else |
pankso@7 | 317 mounted="WARRNING: Public is not mounted" |
pankso@7 | 318 fi |
pankso@7 | 319 echo '<h2><img src="images/monitor.png" alt="" />Pizza Info</h2>' |
pankso@7 | 320 echo '<pre>' |
pankso@7 | 321 [ "$mounted" ] && echo "$mounted" |
pankso@7 | 322 echo -n "Public flavors : " && ls -1 public | wc -l |
pankso@7 | 323 echo -n "Public size : " && du -sh public | awk '{print $1}' |
pankso@7 | 324 echo -n "Tmp size : " && du -sh $tmpdir | awk '{print $1}' |
pankso@7 | 325 echo '</pre>' ;; |
pankso@16 | 326 *\ activity\ *) |
pankso@16 | 327 cat << EOT |
pankso@16 | 328 <h2><img src="images/monitor.png" alt="" />$(gettext "Activity")</h2> |
pankso@16 | 329 |
pankso@16 | 330 <pre> |
pankso@16 | 331 $(tac $activity | highlighter activity) |
pankso@16 | 332 </pre> |
pankso@16 | 333 |
pankso@16 | 334 EOT |
pankso@16 | 335 ;; |
pankso@7 | 336 *) |
pankso@7 | 337 # |
pankso@7 | 338 # Main page |
pankso@7 | 339 # |
pankso@7 | 340 inqueue=$(ls $queue | wc -l) |
pankso@7 | 341 builds=$(cat $builds) |
pankso@7 | 342 pubiso=$(ls -1 public | wc -l) |
pankso@7 | 343 [ "$builds" ] || builds=0 |
pankso@7 | 344 cat << EOT |
pankso@7 | 345 <h2>$(gettext "Welcome")</h2> |
pankso@16 | 346 <form method="get" action="./"> |
pankso@7 | 347 <p> |
pankso@23 | 348 $(gettext "SliTaz Pizza lets you create your own SliTaz ISO flavor |
pankso@23 | 349 online. The ISO image can be burnt on a cdrom or installed on USB media. |
pankso@23 | 350 Please read the SliTaz Pizza <a href="?help">Help</a> before starting |
pankso@23 | 351 a new flavor.") |
pankso@7 | 352 </p> |
pankso@7 | 353 <pre> |
erjo@71 | 354 Flavors: $inqueue in queue - $builds builds - $pubiso <a href="/public">public</a> |
pankso@7 | 355 </pre> |
pankso@7 | 356 |
pankso@7 | 357 <div class="start"> |
pankso@16 | 358 <input type="submit" name="start" value="$(gettext "Create a new flavor")"> |
pankso@7 | 359 </div> |
pankso@7 | 360 |
pankso@7 | 361 EOT |
pankso@7 | 362 echo "<h2>$(gettext "Latest builds")</h2>" |
pankso@7 | 363 echo '<pre>' |
pankso@19 | 364 for flavor in $(ls -1t public | head -n 5) |
pankso@7 | 365 do |
pankso@7 | 366 if [ -f "public/$flavor/receipt" ]; then |
pankso@7 | 367 . ./public/$flavor/receipt |
pankso@7 | 368 [ -f "public/$flavor/$FLAVOR.iso" ] && \ |
pankso@7 | 369 cat << EOT |
pankso@17 | 370 $(get_gravatar $MAINTAINER 24) <a href="?id=$ID">$VERSION</a> : \ |
pankso@16 | 371 <a href="public/$flavor/$FLAVOR.iso">$FLAVOR.iso</a> ($ISO_SIZE) |
pankso@7 | 372 EOT |
pankso@7 | 373 fi |
pankso@7 | 374 done |
pankso@16 | 375 echo '</pre>' |
pankso@16 | 376 cat << EOT |
pankso@16 | 377 <h2>$(gettext "Activity")</h2> |
pankso@16 | 378 <pre> |
pankso@16 | 379 $(tac $activity | head -n 12 | highlighter activity) |
pankso@16 | 380 </pre> |
pankso@16 | 381 <input type="submit" name="activity" value="$(gettext "More activity")"> |
pankso@16 | 382 </form> |
pankso@16 | 383 EOT |
pankso@16 | 384 ;; |
pankso@7 | 385 esac |
pankso@7 | 386 |
pankso@7 | 387 # HTML footer. |
pankso@7 | 388 cat lib/footer.html |
pankso@7 | 389 |
pankso@7 | 390 exit 0 |