cookutils diff lighttpd/index.cgi @ rev 1126
Using single database for the cooker badges - speed up the listings, show counts
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Wed Jan 02 18:06:34 2019 +0200 (2019-01-02) |
parents | 8cf248ef571e |
children | 4f2ea8b43594 |
line diff
1.1 --- a/lighttpd/index.cgi Fri Dec 28 02:16:44 2018 +0200 1.2 +++ b/lighttpd/index.cgi Wed Jan 02 18:06:34 2019 +0200 1.3 @@ -34,6 +34,7 @@ 1.4 command="$CACHE/command"; touch $command 1.5 blocked="$CACHE/blocked" 1.6 broken="$CACHE/broken" 1.7 +badges="$CACHE/badges" 1.8 cooknotes="$CACHE/cooknotes" 1.9 cooktime="$CACHE/cooktime" 1.10 wokrev="$CACHE/wokrev" 1.11 @@ -940,13 +941,22 @@ 1.12 1.13 show_badges() { 1.14 local t p s # title problem solution 1.15 + unset t p s 1.16 + counts=$(mktemp) 1.17 1.18 case $layout in 1.19 table) 1.20 echo "<section><h2>Badges</h2><table class=\"badges\"><thead><tr><th></th><th>Problem</th><th>Solution</th></tr></thead><tbody>" 1.21 ;; 1.22 list) 1.23 - echo "<section><h2>Badges list</h2><p>Click on badge to get list of packages</p><table class=\"badges\"><thead><tr><th></th><th>Problem</th></tr></thead><tbody>" 1.24 + echo "<section><h2>Badges list</h2><p>Click on badge to get list of packages</p><table class=\"badges\"><thead><tr><th></th><th>Problem</th><th>Count</th></tr></thead><tbody>" 1.25 + for i in bdbroken broken any noany libtool nolibtool own ownover perm permover symlink ss fadd frem fdup old orphan patch win no-badge; do 1.26 + case $i in 1.27 + no-badge) num=$(awk -F$'\t' '{if (! $2) print 1}' $badges | wc -l);; 1.28 + *) num=$(awk -F$'\t' -vi=" $i " '{if (index(" " $2 " ", i)) print 1}' $badges | wc -l);; 1.29 + esac 1.30 + echo "$i $num" >>$counts 1.31 + done 1.32 ;; 1.33 esac 1.34 1.35 @@ -1065,7 +1075,8 @@ 1.36 list) 1.37 p=$(echo $p | sed 's|<a [^>]*>\([^<]*\)</a>|\1|g') 1.38 s=$(echo $s | sed 's|<a [^>]*>\([^<]*\)</a>|\1|g|') 1.39 - echo "<tr><td><a href=\"$badge\" class=\"button badge $badge\" title=\"$t\"></a></td><td>$p</td></tr>" 1.40 + c=$(awk -vbadge="$badge" '{if ($1 == badge) { print $2; exit }}' $counts) 1.41 + echo "<tr><td><a href=\"$badge\" class=\"button badge $badge\" title=\"$t\"></a></td><td>$p</td><td>$c</td></tr>" 1.42 ;; 1.43 *) 1.44 echo -n "<span class=\"badge $badge\" title=\"$t\"/>" 1.45 @@ -1078,6 +1089,8 @@ 1.46 echo "</tbody></table></section>" 1.47 ;; 1.48 esac 1.49 + 1.50 + rm $counts 1.51 } 1.52 1.53 1.54 @@ -1609,9 +1622,8 @@ 1.55 <tbody> 1.56 EOT 1.57 1.58 - ls $WOK \ 1.59 + awk -F$'\t' '{if (! $2) print $1}' $badges \ 1.60 | while read pkg; do 1.61 - [ -s $WOK/$pkg/.badges ] && continue 1.62 awk -F$'\t' -vpkg="$pkg" -vbase="$base/" '{ 1.63 if ($1 == pkg) { 1.64 url = base $1 "/"; 1.65 @@ -1632,28 +1644,25 @@ 1.66 <tbody> 1.67 EOT 1.68 1.69 - ls $WOK \ 1.70 + awk -F$'\t' -vbadge=" $badge " '{if (index(" " $2 " ", badge)) print $1}' $badges \ 1.71 | while read pkg; do 1.72 - [ -e $WOK/$pkg/.badges ] || continue 1.73 - if grep -q "^${badge}$" $WOK/$pkg/.badges; then 1.74 - if grep -q "^$pkg " $PKGS/packages-$ARCH.info; then 1.75 - awk -F$'\t' -vpkg="$pkg" -vbase="$base/" '{ 1.76 - if ($1 == pkg) { 1.77 - url = base $1 "/"; 1.78 - gsub("+", "%2B", url); 1.79 - printf("<tr><td><img src=\"%ss/%s\" alt=\"%s\"> ", base, $1, $1); 1.80 - printf("<a href=\"%s\">%s</a></td><td>%s</td><td>%s</td></tr>\n", url, $1, $4, $3); 1.81 - } 1.82 - }' $PKGS/packages-$ARCH.info 1.83 - else 1.84 - # broken packages absent in packages-<arch>.info; use receipt (slower) 1.85 - { 1.86 - . $WOK/$pkg/receipt 1.87 - echo -n "<tr><td><img src=\"$base/s/$pkg\" alt=\"$pkg\"> " 1.88 - echo -n "<a href=\"$base/$pkg/\">$pkg</a></td>" 1.89 - echo "<td>$SHORT_DESC</td><td>$CATEGORY</td></tr>" 1.90 + if grep -q "^$pkg " $PKGS/packages-$ARCH.info; then 1.91 + awk -F$'\t' -vpkg="$pkg" -vbase="$base/" '{ 1.92 + if ($1 == pkg) { 1.93 + url = base $1 "/"; 1.94 + gsub("+", "%2B", url); 1.95 + printf("<tr><td><img src=\"%ss/%s\" alt=\"%s\"> ", base, $1, $1); 1.96 + printf("<a href=\"%s\">%s</a></td><td>%s</td><td>%s</td></tr>\n", url, $1, $4, $3); 1.97 } 1.98 - fi 1.99 + }' $PKGS/packages-$ARCH.info 1.100 + else 1.101 + # broken packages absent in packages-<arch>.info; use receipt (slower) 1.102 + { 1.103 + . $WOK/$pkg/receipt 1.104 + echo -n "<tr><td><img src=\"$base/s/$pkg\" alt=\"$pkg\"> " 1.105 + echo -n "<a href=\"$base/$pkg/\">$pkg</a></td>" 1.106 + echo "<td>$SHORT_DESC</td><td>$CATEGORY</td></tr>" 1.107 + } 1.108 fi 1.109 done 1.110 ;; 1.111 @@ -1724,8 +1733,9 @@ 1.112 1.113 1.114 # Show Cooker badges 1.115 - if [ -s $wok/$pkg/.badges ]; then 1.116 - layout='table' show_badges $(cat $wok/$pkg/.badges) 1.117 + pkg_badges=$(awk -F$'\t' -vpkg="$pkg" '{if ($1 == pkg) { print $2; exit } }' $badges) 1.118 + if [ -n "$pkg_badges" ]; then 1.119 + layout='table' show_badges $pkg_badges 1.120 fi 1.121 1.122