SVN: toys/stbr/src-builder-status.py

Bartosz Świątek shadzik w gmail.com
Sob, 29 Lis 2008, 16:12:08 CET


W dniu 29 listopada 2008 14:15 użytkownik Daniel Mróz <beorn w alpha.pl> napisał:
> On Fri, Nov 28, 2008 at 02:52:42PM +0100, shadzik wrote:
>> Author: shadzik
>> Date: Fri Nov 28 14:52:41 2008
>> New Revision: 10008
>>
>> Added:
>>    toys/stbr/src-builder-status.py   (contents, props changed)
>> Log:
>> - get spec status from src-builder
> [CIAP...diff]
> Ałaaa.... Nie lepiej tak:
>
> ===============================================================
> #!/usr/bin/python
>
> import os
> import sys
>
> mailbox = "/var/mail/stbr"
> #f_log = "/home/users/stbr/ApHeX/scripts/"
> f_log = "./"
>
>
>
> def parseMailbox(distver, spec, mailbox):
>    builder_l = []
>    status_l = []
>    results = []
>
>    f = open(mailbox, 'r')
>    for line in f.xreadlines():
>        if line.startswith('From:'):
>            builder_l.append(line.split(' ')[2])
>        if line.contains(spec):
>            status_l.append(line.split(' ')[2])
>
>    for i in xrange(len(status_l)):
>        if builder_l[i].contains('%s-src' % (distver,)):
>            results.append(status_l[i])
>    f.close()
>    return results
>
>
>
> try:
>    (distver, spec) = sys.argv[1:2]
>    results = parseMailbox(distver, spec, mailbox)
> except IndexError:
>    sys.stderr.write('Usage: %s [ th | ti ] <spec>\n' % (os.basename(__file__),))
>    sys.exit(1)
> except Exception, e:
>    sys.stderr.write('Error: %s\n' % (str(sys.exc_info()[1]),))
>    sys.exit(1)
>
> sys.stdout.write('\n'.join(results))
> ==============================================================
>
> ???
> Albo wogóle wywalić funkcję parseMailbox(), gdyż jest przez kod
> wywoływana tylko raz, więc jej istnienie w takiej postaci mija się z
> celem o ile nie planujemy dokładać nowych funkcji i/lub przerzucać tego
> później do oddzielnej (wspólnej?) biblioteki/modułu.
>
> P.S. Nie sprawdzałem czy skrypt działa, bo nie mam dostępu do, lub nie
> wiem gdzie leży plik logu.

Cześć,

pewnie i lepiej, ale jak na 10min, które spędziłem nad tym po
zgłoszeniu zapotrzebowania na taką funkcję i tak jest nieźle i co
najważniejsze, program robi co ma robić.

f_log jest w ogóle zbędne i wywodzi się z czasów kiedy chciałem
napisać innego helpera, który developerowi sforwarduje maila. Do
olania.

Nie testowałem Twojej wersji, ale wygląda obiecująco. Skrypt
sprawdzisz bardzo prosto czy działa:

1. Wyślij dwa zlecenia testowe na buildery z Twojego maila:
a) pierwsze zlecenie niech się zbuduje
b) drugie zlecenie niech się nie zbuduje wcale, niech nawet nie trafi
do queue - celem tego jest dostać mail z src-buildera z błędem, że nie
mógł zbudować src.rpm.
2. Uruchom skrypt i sprawdź czy w pierwszym wypadku dostaniesz OK lub
nic (tak naprawdę status poprawny nas w ogóle nie interesuje) i czy w
drugim przypadku wyskoczy FAILED (to i tylko to nas interesuje).
Oczywiście musisz też sprawdzić czy w razie podania bzdurnego speca
program nie wywali jakiegoś błędu - najlepiej żeby nic nie wywalił.
3. Jak zadziała to nic nie stoi na przeszkodzie byś mnie poprawił w
naszym SVNie - ja pythona nie umiem programować, tak tylko czasami z
doskoku coś próbuję, także na pewno popełniam błędy, które Tobie mogą
wydawać się zabawne.
4. Bot ściągnie nową wersje z repozytorium o pełnej godzinie (kiedyś
było to tylko o 1 w nocy, ale po tym jak się zaczęli
wpisywać/wypisywać developerzy z projektu to lepiej częściej
odświeżać).

Dzięki za info i pozdrawiam,
b


Więcej informacji o liście dyskusyjnej pld-devel-pl