slitaz-dev-tools annotate tazpkg-web/tazpkg-web @ rev 301
tazwikiss: replaced blank in curdate() in index.sh by T to display filenames properly in history
author | Hans-G?nter Theisgen |
---|---|
date | Fri Apr 28 14:08:02 2017 +0100 (2017-04-28) |
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 |