#!/bin/sh -ef export LC_ALL=C bugzilla="https://bugzilla.altlinux.org" columns="bug_id,component,bug_severity,bug_status,resolution,short_desc" URL="$bugzilla/buglist.cgi?ctype=csv&columnlist=$columns" mkdir -p bugs wget --non-verbose --timeout=60 -O bugs/wget.out "$URL" &>bugs/wget.sucks || { echo "wget sucks:"; cat bugs/wget.sucks; exit 1; } >&2 lines() { wc -l ${1+"$@"} |awk '{print$1}'; } csv2tab='s/\t/ /g;s/^\([[:alnum:]_]\+\),"/\1\t/;s/","/\t/g;s/",,"/\tx\t/g;s/",$//;s/""/"/g' sort -nu bugs/wget.out |sed -e "1d;$csv2tab" >bugs/list.new total="$(lines bugs/list.new)" if [ ! -f bugs/list.old ]; then mv bugs/list.new bugs/list.old echo "Initialized database ($total bugs)." exit 0 fi comm -13 bugs/list.old bugs/list.new >bugs/plus comm -23 bugs/list.old bugs/list.new >bugs/minus tab="$(printf \\t)" join -t"$tab" bugs/minus bugs/plus >bugs/updated join -t"$tab" -v1 bugs/minus bugs/plus >bugs/deleted join -t"$tab" -v2 bugs/minus bugs/plus >bugs/brandnew f_res='function resolved(status,resolution) { return (status ~/CLOSED|RESOLVED/ && resolution ~/FIXED|INVALID|WONTFIX|WORKSFORME|DUPLICATE/) }' # 4,9:status 5,10:resolution awk -F"$tab" "$f_res"'!resolved($4,$5)&&resolved($9,$10)' bugs/updated >bugs/resolved awk -F"$tab" "$f_res"'!resolved($4,$5)' bugs/list.new >bugs/pending [ -s bugs/brandnew ] || exit 0 exec 4>bugs/msg subj="I: Sisyphus-$(date +%Y%m%d) bugs:" if [ -s bugs/brandnew ]; then n="$(lines bugs/brandnew)" subj="$subj +$n" echo " $n NEW bugs"; echo while IFS="$tab" read id package severity status resolution desc; do echo "#$id $package $severity" echo "$desc" echo done &4 if [ -s bugs/resolved ]; then n="$(lines bugs/resolved)" subj="$subj -$n" echo " $n RESOLVED bugs"; echo while IFS="$tab" read id pkg0 sev0 status0 resolution0 desc0 \ package severity status resolution desc; do echo "#$id $package $severity $resolution" echo "$desc" echo done &4 n="$(lines bugs/pending)" subj="$subj ($n)" echo "Total $n pending bugs." >&4 if [ -n "$mailto" -a -z "${mailto##*@*}" ]; then /usr/lib/sendmail -oi -t <