]> git.pld-linux.org Git - projects/pld-builder.new.git/blob - PLD_Builder/mailer.py
- starting testing src builder...
[projects/pld-builder.new.git] / PLD_Builder / mailer.py
1 import time
2 import os
3 import sys
4 import StringIO
5
6 from config import config
7
8 def sendfile(src, dst):
9   while 1:
10     s = src.read(10000)
11     if s == "": break
12     dst.write(s)
13
14 class Message:
15   def __init__(self):
16     self.headers = {}
17     self.body = StringIO.StringIO()
18     self.set_std_headers()
19
20   def set_header(self, n, v):
21     self.headers[n] = v
22
23   def set_headers(self, to = None, cc = None, subject = None):
24     if to != None:
25       self.set_header("To", to)
26     if cc != None:
27       self.set_header("Cc", cc)
28     if subject != None:
29       self.set_header("Subject", subject)
30
31   def write_line(self, l):
32     self.body.write("%s\n" % l)
33
34   def write(self, s):
35     self.body.write(s)
36
37   def append_log(self, log):
38     s = os.stat(log)
39     if s.st_size > 50000:
40       # just head and tail
41       f = open(log)
42       line_cnt = 0
43       for l in f.xreadlines():
44         line_cnt++
45       f.seek(0)
46       line = 0
47       for l in f.xreadlines():
48         if line < 100 or line > line_cnt - 100:
49           self.body.write(l)
50         if line == line_cnt - 100:
51           self.body.write("\n\n[...]\n\n")
52         line++
53     else:
54       sendfile(open(log), self.body)
55
56   def set_std_headers(self):
57     self.headers["Date"] = time.asctime()
58     self.headers["Message-ID"] = "<pld-builder.%d.%d@%s>" \
59         % (time.time(), os.getpid(), os.uname()[1])
60     self.headers["From"] = "PLD %s builder <%s>" \
61         % (config.builder, config.email)
62     self.headers["X-PLD-Builder"] = config.builder
63
64   def write_to(self, f):
65     for k, v in self.headers.items():
66       f.write("%s: %s\n" % (k, v))
67     f.write("\n")
68     self.body.seek(0)
69     sendfile(self.body, f)
70
71   def send(self):
72     # FIXME
73     self.write_to(sys.stdout)
This page took 0.035162 seconds and 4 git commands to generate.