[sisyphus] bugzilla robot

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Вт Июл 5 17:22:36 MSD 2005


On Tue, Jul 05, 2005 at 02:04:44PM +0300, Michael Shigorin wrote:
> On Tue, Jul 05, 2005 at 11:30:15AM +0400, Alexey Tourbin wrote:
> > > после dist-upgrade обновляет список пакетов, на которые подписан
> > > этот аккаунт, а перед следующим -- сбегает к первой и
> > > поинтересуется, что там открывали с предыдущего раза.
> > Кто-то хотел робота к багзилле? :)   Я, правда, не понял, что
> > такое "список пакетов, на которые подписан аккаунт"
> 
> Это если выставлять такое как веб-сервис -- персонализация
> называется. :)  На sisyphus.ru некоторая уже есть, но без
> интеграции с какими-либо "реальными" источниками авторизационной
> информации.
> 
> На самом деле все такие вещи видятся как кусочки altlinux.org,
> если опять же его командой и для команды строить.

Ох не люблю я HTTP, отчасти из-за того, что у меня сейчас нет
нормального интернта, отчасти из-за того, что HTTP плохо интегрируется
в UNIX environment.

(Ну что это такое, браузеры не умеют $EDITOR запускать для
редактирования textarea.  ELinks умеет, но всё равно не очень удобно --
редактор раскрывается на всё окно, в браузер назад заглянуть нельзя.
Грубо говоря, не хватает какого-нибудь сквозного OLE.)

(http://inferno.bell-labs.com/cm/cs/who/bwk/workshop.ps.gz -- интересная
статья Kernighan'а, в которой, в частности, упоминается Visual Basic для
Windows 3.1.  VB, выходит, всем хорош, though the facilities for viewing
and editing text are so primitive that one yearns for a *powerful editor
like ed*.)
----------- следующая часть -----------
#!/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 <bugs/brandnew
fi >&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 <bugs/resolved
fi >&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 <<EOF
To: $(echo $mailto |sed -e 's/ /, /g;s/,,/,/g')
Subject: $subj
Content-Type: text/plain; charset=koi8-r

$(cat bugs/msg)
EOF
	mv -f bugs/list.new bugs/list.old
else
	echo "$subj"
	cat bugs/msg
fi
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20050705/4a4cf748/attachment-0003.bin>


Подробная информация о списке рассылки Sisyphus