wok annotate tazpkg-web/stuff/tazpkg-web @ rev 3756

Fix: libsoup commit
author Matthew Sheets <rcx@zoominternet.net>
date Thu Jul 23 15:51:49 2009 +0000 (2009-07-23)
parents bcae4cfaa7e5
children 48aebe803b83
rev   line source
pankso@3521 1 #!/bin/sh
pankso@3521 2 # SliTaz Packages Web interface generator: http://pkgs.slitaz.org/
pankso@3521 3 #
pankso@3521 4 # (C) 2009 SliTaz project - GNU General Public License v3.
pankso@3521 5 # Christophe Lincoln <pankso@slitaz.org>
pankso@3521 6 #
pankso@3521 7
pankso@3521 8 . /etc/slitaz/tazpkg-web.conf
pankso@3521 9
pankso@3521 10 RELEASE="$1"
pankso@3521 11 PAGES_DIR=$WEB_INTERFACE/$RELEASE
pankso@3521 12 DATE=`date +%Y-%m-%d\ \%H:%M:%S`
pankso@3521 13
pankso@3521 14 status()
pankso@3521 15 {
pankso@3521 16 local CHECK=$?
pankso@3521 17 echo -en "\033[70G"
pankso@3521 18 if [ $CHECK = 0 ]; then
pankso@3521 19 echo "Done"
pankso@3521 20 else
pankso@3521 21 echo "Failed"
pankso@3521 22 fi
pankso@3521 23 return $CHECK
pankso@3521 24 }
pankso@3521 25
pankso@3521 26 # Search from option with current version in first so users dont have
pankso@3521 27 # to select the correct one.
pankso@3521 28 search_form_option()
pankso@3521 29 {
pankso@3521 30 if [ "$RELEASE" == "stable" ]; then
pankso@3521 31 cat << _EOT_
pankso@3521 32 <option>stable</option>
pankso@3521 33 <option>cooking</option>
pankso@3521 34 <option>1.0</option>
pankso@3521 35 _EOT_
pankso@3521 36 else
pankso@3521 37 cat << _EOT_
pankso@3521 38 <option>cooking</option>
pankso@3521 39 <option>stable</option>
pankso@3521 40 <option>1.0</option>
pankso@3521 41 _EOT_
pankso@3521 42 fi
pankso@3521 43 }
pankso@3521 44
pankso@3521 45 content_top()
pankso@3521 46 {
pankso@3521 47 cat >> $PAGES_DIR/$page.html << _EOF_
pankso@3521 48
pankso@3521 49 <!-- Content top. -->
pankso@3521 50 <div id="content_top">
pankso@3521 51 <div class="top_left"></div>
pankso@3521 52 <div class="top_right"></div>
pankso@3521 53 </div>
pankso@3521 54
pankso@3521 55 <!-- Content -->
pankso@3521 56 <div id="content">
pankso@3521 57 <a name="content"></a>
pankso@3521 58
pankso@3521 59 <h1><font color="#3E1220">Packages $RELEASE</font></h1>
pankso@3521 60 <h2><font color="#DF8F06">$h2</font></h2>
pankso@3521 61 _EOF_
pankso@3521 62 }
pankso@3521 63
pankso@3521 64 # xHTML Header.
pankso@3521 65 xhtml_header()
pankso@3521 66 {
pankso@3521 67 cat $LIB_DIR/html/header.html > $PAGES_DIR/$page.html
pankso@3521 68 sed -i s/"_RELEASE_"/"$RELEASE"/ $PAGES_DIR/$page.html
pankso@3521 69 sed -i s/"_PAGE_"/"$page"/ $PAGES_DIR/$page.html
pankso@3521 70 sed -i s/"_DATE_"/"$DATE"/ $PAGES_DIR/$page.html
pankso@3521 71 }
pankso@3521 72
pankso@3521 73 # xHTML Footer.
pankso@3521 74 xhtml_footer()
pankso@3521 75 {
pankso@3521 76 cat $LIB_DIR/html/footer.html >> $PAGES_DIR/$page.html
pankso@3521 77 sed -i s/"_DATE_"/"$DATE"/ $PAGES_DIR/$page.html
pankso@3521 78 }
pankso@3521 79
pankso@3521 80 # Index pages with categories and search form.
pankso@3521 81 gen_index_content()
pankso@3521 82 {
pankso@3521 83 cat >> $PAGES_DIR/$page.html << _EOT_
pankso@3521 84
pankso@3521 85 <div style="text-align: center; padding: 20px;">
pankso@3521 86 <form method="post" action="http://pkgs.slitaz.org/search.cgi">
pankso@3521 87 <select name="object">
pankso@3521 88 <option>Package</option>
pankso@3521 89 <option>Desc</option>
pankso@3521 90 <option>Tags</option>
pankso@3521 91 <option>Receipt</option>
pankso@3521 92 <option>Depends</option>
pankso@3521 93 <option>File</option>
pankso@3521 94 <option>File_list</option>
pankso@3521 95 </select>
pankso@3521 96 <strong>:</strong>
pankso@3521 97 <input type="text" name="query" size="32" />
pankso@3521 98 <select name="version">
pankso@3521 99 `search_form_option`
pankso@3521 100 </select>
pankso@3521 101 <input type="submit" name="search" value="Search" />
pankso@3521 102 </form>
pankso@3521 103 <p>
pankso@3521 104 $packages packages - Database generated on: $DATE
pankso@3521 105 </p>
pankso@3521 106 </div>
pankso@3521 107 _EOT_
pankso@3521 108 cat $LIB_DIR/html/catlist.html >> $PAGES_DIR/$page.html
pankso@3521 109 }
pankso@3521 110
pankso@3521 111 # Packages <h3> and infos in <pre>. Some packages use EXTRAVERSION in
pankso@3521 112 # the receipt so keep the value or set it to the kernel version.
pankso@3521 113 pkgs_pages_content()
pankso@3521 114 {
pankso@3521 115 for pkg in $WOK/*
pankso@3521 116 do
pankso@3521 117 DEPENDS=""
pankso@3521 118 DEPENDS_LINKS=""
pankso@3521 119 EXTRAVERSION=""
pankso@3521 120 . $pkg/receipt
pankso@3521 121 packages=$(($packages+1))
pankso@3521 122 cat >> $PAGES_DIR/$CATEGORY.html << _EOT_
pankso@3521 123
pankso@3521 124 <a name="$PACKAGE"></a>
pascal@3566 125 <h3>
pascal@3566 126 <a href="tazpkg://mirror.slitaz.org/packages/$RELEASE/$PACKAGE-${VERSION}$EXTRAVERSION.tazpkg"><img src="/pics/tazpkg.png" title="install" alt="install" /></a>
pascal@3566 127 $PACKAGE</h3>
pankso@3521 128 <pre class="package">
pankso@3521 129 Version : $VERSION
pankso@3521 130 Short desc : $SHORT_DESC
pankso@3521 131 Web site : <a href="$WEB_SITE">$WEB_SITE</a>
pankso@3521 132 _EOT_
pascal@3566 133 [ -z "$EXTRAVERSION" ] && EXTRAVERSION="_$KERNEL"
pankso@3521 134 # Extraversion string or not
pankso@3521 135 if [ -f "$PACKAGES_REPOSITORY/$PACKAGE-${VERSION}$EXTRAVERSION.tazpkg" ]; then
pankso@3521 136 cat >> $PAGES_DIR/$CATEGORY.html << _EOT_
pankso@3521 137 Download : <a href="http://mirror.slitaz.org/packages/$RELEASE/$PACKAGE-${VERSION}$EXTRAVERSION.tazpkg">$PACKAGE-${VERSION}$EXTRAVERSION.tazpkg</a>
pankso@3521 138 _EOT_
pankso@3521 139 echo '</pre>' >> $PAGES_DIR/$CATEGORY.html
pankso@3521 140 else
paul@3528 141 # Check if package exists, could be virtual?
pankso@3521 142 [ -f "$PACKAGES_REPOSITORY/$PACKAGE-$VERSION.tazpkg" ] &&
pankso@3521 143 cat >> $PAGES_DIR/$CATEGORY.html << _EOT_
pankso@3521 144 Download : <a href="http://mirror.slitaz.org/packages/$RELEASE/$PACKAGE-$VERSION.tazpkg">$PACKAGE-$VERSION.tazpkg</a>
pankso@3521 145 _EOT_
pankso@3521 146 echo '</pre>' >> $PAGES_DIR/$CATEGORY.html
pascal@3566 147 fi
pascal@3566 148 # Dependencies with link to the package information using
pascal@3566 149 # category.html#anchor
pascal@3566 150 if [ -n "$DEPENDS" ]; then
pascal@3566 151 for dep in $DEPENDS
pascal@3566 152 do
pascal@3566 153 receipt=$WOK/$dep/receipt
pascal@3566 154 if [ -f "$receipt" ]; then
pascal@3566 155 cat=`grep CATEGORY $receipt | sed s/CATEGORY=\"// | sed s/\"//`
pascal@3566 156 DEPENDS_LINKS=${DEPENDS_LINKS}"<a href=\"$cat.html#$dep\">$dep</a> "
pascal@3566 157 fi
pascal@3566 158 done
pascal@3566 159 cat >> $PAGES_DIR/$CATEGORY.html << _EOT_
pankso@3521 160 <p>Depends : $DEPENDS_LINKS</p>
pankso@3521 161 _EOT_
pankso@3521 162 fi
pankso@3521 163 done
pankso@3521 164 }
pankso@3521 165
pankso@3521 166 # Pages footer
pankso@3521 167 pages_footer()
pankso@3521 168 {
pankso@3521 169 for page in $CATEGORIES
pankso@3521 170 do
pankso@3521 171 # Gen categories menu/links
pankso@3521 172 echo '' >> $PAGES_DIR/$page.html
pankso@3521 173 echo '<p class="pkg_nav">' >> $PAGES_DIR/$page.html
pankso@3521 174 echo 'Categories' >> $PAGES_DIR/$page.html
pankso@3521 175 for i in $CATEGORIES
pankso@3521 176 do
pankso@3521 177 cat >> $PAGES_DIR/$page.html << _EOF_
pankso@3521 178 | <a href="$i.html">$i</a>
pankso@3521 179 _EOF_
pankso@3521 180 done
pankso@3521 181 echo '</p>' >> $PAGES_DIR/$page.html
pankso@3521 182 xhtml_footer
pankso@3521 183 done
pankso@3521 184 }
pankso@3521 185
pankso@3521 186 # Home page with search form and tag cloud.
pankso@3521 187 home_page()
pankso@3521 188 {
pankso@3521 189 PAGES_DIR=$WEB_INTERFACE
pankso@3521 190 page="index"
pankso@3521 191 h2="Web interface"
pankso@3521 192 RELEASE=""
pankso@3521 193 xhtml_header
pankso@3521 194 content_top
pankso@3521 195 cat $LIB_DIR/html/home.html >> $PAGES_DIR/$page.html
pankso@3521 196 xhtml_footer
pankso@3521 197 }
pankso@3521 198
pankso@3521 199 # Generate all categories pages and release index.
pankso@3521 200 gen_all_pages()
pankso@3521 201 {
pankso@3521 202 # Clean previews files.
pankso@3521 203 rm -rf $PAGES_DIR
pankso@3521 204 mkdir -p $PAGES_DIR
pankso@3521 205 echo -e "\nStarting to build the $RELEASE Web interface... "
pankso@3521 206 echo "================================================================================"
pankso@3521 207 # Packages pages header, menu and content top at first.
paul@3528 208 echo -n "Generating all page headers..."
pankso@3521 209 for page in $CATEGORIES
pankso@3521 210 do
pankso@3521 211 h2=$page
pankso@3521 212 xhtml_header
pankso@3521 213 cat $LIB_DIR/html/menu.html >> $PAGES_DIR/$page.html
pankso@3521 214 content_top
pankso@3521 215 done
pankso@3521 216 status
pankso@3521 217 # Scan the wok and classify packages by category.
paul@3528 218 echo -n "Scanning the wok and generating page contents..."
pankso@3521 219 pkgs_pages_content
pankso@3521 220 status
pankso@3521 221 # Gen all packages pages footer.
paul@3528 222 echo -n "Generating all page footers..."
pankso@3521 223 pages_footer
pankso@3521 224 status
pankso@3521 225 # Stable or Cooking index with categories and home page.
pankso@3521 226 echo -n "Generating the main index..."
pankso@3521 227 page="index"
pankso@3521 228 h2="Categories"
pankso@3521 229 xhtml_header
pankso@3521 230 cat $LIB_DIR/html/menu.html >> $PAGES_DIR/$page.html
pankso@3521 231 content_top
pankso@3521 232 gen_index_content
pankso@3521 233 xhtml_footer
pankso@3521 234 home_page
pankso@3521 235 status
pankso@3521 236 echo "================================================================================"
pankso@3521 237 echo -e "Pages generated: $WEB_INTERFACE\n"
pankso@3521 238 }
pankso@3521 239
pankso@3521 240 # Prefer the Hg wok in the chroot. On host running Tazbb the wok's
paul@3528 241 # are updated and copied automatically and so more up-to-date.
pankso@3521 242
pankso@3521 243 case "$1" in
pankso@3521 244 stats)
pankso@3521 245 size=`du -sh $WEB_INTERFACE | awk '{ print $1 }'`
pankso@3521 246 pages=`find $WEB_INTERFACE -name *.html | wc -l`
pankso@3521 247 stable=`find $WEB_INTERFACE/stable -name *.html | wc -l`
pankso@3521 248 cooking=`find $WEB_INTERFACE/cooking -name *.html | wc -l`
pankso@3521 249 cat << _EOT_
pankso@3521 250
pankso@3521 251 Tazpkg-web statistics
pankso@3521 252 ================================================================================
pankso@3521 253 Web interface : $WEB_INTERFACE ($size)
pankso@3521 254 xHTML pages : $pages (Stable $stable - Cooking $cooking)
pankso@3521 255 Library path : $LIB_DIR
pankso@3521 256 Stable path : $STABLE
pankso@3521 257 Cooking path : $COOKING
pankso@3521 258 ================================================================================
pankso@3521 259
pankso@3521 260 _EOT_
pankso@3521 261 ;;
pankso@3521 262 check)
pankso@3521 263 RELEASE=$2
pankso@3521 264 [ -z "$RELEASE" ] && RELEASE=cooking
pankso@3521 265 echo -e "\nChecking: $WEB_INTERFACE/$RELEASE\n"
pankso@3521 266 for page in `cd $WEB_INTERFACE/$RELEASE && ls *.html`
pankso@3521 267 do
pankso@3521 268 if ! echo "$CATEGORIES index" | grep -qw ${page%.html}; then
pankso@3521 269 echo "Wrong category: ${page%.html}"
pankso@3521 270 fi
pankso@3521 271 done && echo "" ;;
pankso@3521 272 stable)
pankso@3521 273 PACKAGES_REPOSITORY=$STABLE/packages
pankso@3521 274 if [ -d $STABLE/chroot/home/slitaz/hg/wok ]; then
pankso@3521 275 WOK=$STABLE/chroot/home/slitaz/hg/wok
pankso@3521 276 else
pankso@3521 277 WOK=$STABLE/wok
pankso@3521 278 fi
pankso@3521 279 KERNEL=`cat $WOK/linux/receipt | grep ^VERSION= | cut -d '"' -f 2`
pankso@3521 280 gen_all_pages ;;
pankso@3521 281 cooking)
pankso@3521 282 PACKAGES_REPOSITORY=$COOKING/packages
pankso@3521 283 if [ -d $COOKING/chroot/home/slitaz/hg/wok ]; then
pankso@3521 284 WOK=$COOKING/chroot/home/slitaz/hg/wok
pankso@3521 285 else
pankso@3521 286 WOK=$COOKING/wok
pankso@3521 287 fi
pankso@3521 288 KERNEL=`cat $WOK/linux/receipt | grep ^VERSION= | cut -d '"' -f 2`
pankso@3521 289 gen_all_pages ;;
pankso@3521 290 *|usage)
pankso@3521 291 cat << _EOT_
pankso@3521 292
pankso@3521 293 Tazpkg-web - SliTaz Packages Web interface generator.
pankso@3521 294 Usage: `basename $0` [slitaz-release|stats|check]
pankso@3521 295
pankso@3521 296 _EOT_
pankso@3521 297 ;;
pankso@3521 298 esac
pankso@3521 299
pankso@3521 300 exit 0