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

Update translations.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Sat Nov 19 23:15:14 2016 +0200 (2016-11-19)
parents 57a95ac66802
children f6c523b4e43d
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
pascal@65 41 # Gen an receipt for new flavor.
pascal@65 42 gen_receipt() {
pankso@7 43 cat > $tmpdir/slitaz-$id/receipt << EOT
pankso@7 44 # SliTaz flavor receipt.
pankso@7 45
pascal@65 46 FLAVOR="slitaz-$flavor"
pascal@65 47 SHORT_DESC="$desc"
pankso@7 48 VERSION="$(date "+%Y%m%d")"
pascal@65 49 MAINTAINER="$mail"
pankso@7 50
pascal@65 51 ID="$id"
pascal@65 52 SKEL="$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
paul@45 81 # Add pkg only if not yet 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)
pascal@39 87 echo "$pkg $vers \" $desc \"" >> $pkgsdesc
pascal@38 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
paul@45 108 [ ! "$desc" ] && echo "Missing short description" && 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
pascal@65 116 gen_receipt
pankso@27 117 echo "Receipt created : $(date '+%Y-%m-%d %H:%M')" > $log ;;
pankso@7 118 esac
pankso@7 119
pankso@7 120 #
pankso@7 121 # Source the receipt and display page.
pankso@7 122 #
pankso@7 123 . $tmpdir/slitaz-$id/receipt
pankso@7 124
pankso@7 125 nb=$(cat $list | wc -l)
pankso@7 126 cat << EOT
pankso@7 127 <h2>Packages ($nb)</h2>
pankso@7 128
pankso@7 129 <form method="get" action="pkgs.cgi">
pankso@22 130 <div id="packages">
pankso@7 131 <table>
pankso@7 132 <tbody>
pankso@7 133 $(list_pkgs)
pankso@7 134 </tbody>
pankso@7 135 </table>
pankso@22 136 </div>
pankso@7 137 <input type="hidden" name="id" value="$id" />
al@108 138 <input type="submit" name="rm" value="$(gettext 'Remove package(s)')" />
pankso@7 139 </form>
pankso@7 140
pankso@22 141 <form method="get" action="pkgs.cgi">
pankso@22 142 <div style="float: right;">
pankso@16 143 <input type="text" name="add" style="width: 400px;" />
pankso@7 144 <input type="hidden" name="id" value="$id" />
al@108 145 <input type="submit" name="pkgs" value="$(gettext 'Add package(s)')" />
pankso@22 146 </div>
pankso@22 147 </form>
pankso@22 148
pankso@22 149 <form method="get" action="pkgs.cgi">
pankso@25 150 <p>
pankso@22 151
al@108 152 $(gettext "Here you can add or remove some packages to your flavor. You \
paul@106 153 can also search for a package name and description to find a package name")
pankso@22 154
pankso@22 155 </p>
pankso@22 156 <input type="text" name="search" style="width: 300px;" />
pankso@22 157 <input type="hidden" name="id" value="$id" />
al@108 158 <input type="submit" value="$(gettext 'Search')" />
pankso@22 159 <div id="pkgs-search">
pankso@22 160 $([ "$search" ] && search_pkgs)
pankso@22 161 </div>
pankso@7 162 </form>
pankso@7 163
pankso@7 164 <pre>
pankso@7 165 Uniq ID : $id
pankso@7 166 Flavor : $FLAVOR
pankso@7 167 Short desc : $SHORT_DESC
pankso@7 168 </pre>
pankso@25 169
pankso@25 170 <div class="next">
pankso@25 171 <form method="get" action="rootfs.cgi">
pankso@25 172 <input type="hidden" name="id" value="$id" />
al@108 173 <input type="submit" value="$(gettext 'Continue')">
pankso@25 174 </form>
pankso@25 175 </div>
pankso@25 176
pankso@7 177 EOT
pankso@7 178
pankso@7 179 # HTML footer.
pankso@7 180 cat lib/footer.html
pankso@7 181
pankso@7 182 exit 0