slitaz-dev-tools annotate tazpkg-web/tazpkg-web @ rev 99

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