]>
Commit | Line | Data |
---|---|---|
81675874 | 1 | #!/usr/bin/python |
2 | ||
3 | import os | |
4 | import time | |
5 | ||
6 | from helpers import size | |
81675874 | 7 | |
feb02477 | 8 | def find(info): |
81675874 | 9 | ret = [] |
d979645d MT |
10 | for item in info["nightly_builds"]: |
11 | path = item.get("path", None) | |
12 | if not path or not os.path.exists(path): | |
13 | continue | |
14 | ||
15 | for host in os.listdir(path): | |
16 | for build in os.listdir(os.path.join(path, host)): | |
17 | ret.append(Build(os.path.join(path, host, build))) | |
81675874 | 18 | |
19 | return ret | |
20 | ||
21 | class Build(object): | |
22 | def __init__(self, path): | |
23 | self.path = path | |
24 | ||
25 | self.__buildinfo = None | |
26 | ||
27 | @property | |
28 | def buildinfo(self): | |
29 | if not self.__buildinfo: | |
30 | f = open(os.path.join(self.path, ".buildinfo")) | |
31 | self.__buildinfo = f.readlines() | |
32 | f.close() | |
33 | return self.__buildinfo | |
34 | ||
35 | def get(self, key): | |
36 | key = key.upper() + "=" | |
37 | for line in self.buildinfo: | |
38 | if line.startswith(key): | |
39 | return line[len(key):].strip("\n") | |
40 | ||
41 | @property | |
42 | def build_host(self): | |
43 | return self.get("hostname") | |
44 | ||
45 | @property | |
46 | def release(self): | |
47 | return self.get("release") | |
48 | ||
49 | @property | |
50 | def time(self): | |
51 | return time.localtime(float(self.get("date"))) | |
52 | ||
53 | @property | |
54 | def date(self): | |
55 | return time.strftime("%a, %Y-%m-%d %H:%M", self.time) | |
56 | ||
57 | @property | |
58 | def arch(self): | |
59 | return self.get("arch") | |
60 | ||
61 | @property | |
62 | def iso(self): | |
63 | return self.get("iso") | |
64 | ||
65 | @property | |
66 | def size(self): | |
67 | return size(os.path.getsize(os.path.join(self.path, self.iso))) | |
68 | ||
69 | @property | |
70 | def packages(self): | |
71 | path = "%s/packages_%s" % (self.path, self.arch,) | |
72 | if not os.path.exists(path): | |
73 | return [] | |
74 | return os.listdir(path) | |
75 | ||
76 | @property | |
77 | def pxe(self): | |
78 | dir = "/srv/www/ipfire.org/pxe" | |
79 | if not os.path.isdir(dir): | |
80 | return "" | |
81 | ||
82 | for iso in os.listdir(dir): | |
83 | # Skip non-iso files | |
84 | if not iso.endswith(".iso"): | |
85 | continue | |
86 | if os.readlink(os.path.join(dir, iso)) == os.path.join(self.path, self.iso): | |
87 | return "[PXE]" | |
88 | return "" |