1 | #!/usr/bin/env python2
|
2 | """
|
3 | release_history.py
|
4 | """
|
5 | from __future__ import print_function
|
6 |
|
7 | import os, re, subprocess, sys, zipfile
|
8 |
|
9 | def log(msg, *args):
|
10 | if args:
|
11 | msg = msg % args
|
12 | print('\t' + msg, file=sys.stderr)
|
13 |
|
14 | VERSION_RE = re.compile('0\.(\d+)\.(\w+)')
|
15 | HEADER=('date', 'version', 'spec_wwz', 'survey_path', 'cpp_summary_path')
|
16 |
|
17 | def main(argv):
|
18 |
|
19 | print('\t'.join(HEADER))
|
20 |
|
21 | for release_dir in sys.stdin:
|
22 | release_dir = release_dir.strip()
|
23 |
|
24 | #print(release_dir)
|
25 | m = VERSION_RE.search(release_dir)
|
26 | assert m is not None
|
27 |
|
28 | version = m.group(0)
|
29 |
|
30 | p = os.path.join(release_dir, 'release-date.txt')
|
31 | with open(p) as f:
|
32 | date = f.readline().strip()
|
33 |
|
34 | # 0.9.3 is missing
|
35 | #print('%s\t%s' % (date, version))
|
36 | spec_wwz = os.path.join(release_dir, 'test/spec.wwz')
|
37 | if not os.path.exists(spec_wwz):
|
38 | log('No spec.wwz; skipping %s %s', date, version)
|
39 | print('\t'.join([date, version, '-', '-', '-']))
|
40 | continue
|
41 |
|
42 | with open(spec_wwz) as f:
|
43 | z = zipfile.ZipFile(f)
|
44 |
|
45 | survey_path = '-'
|
46 |
|
47 | p1 = 'survey/osh.html'
|
48 | try:
|
49 | z.getinfo(p1)
|
50 | survey_path = p1
|
51 | except KeyError:
|
52 | pass
|
53 |
|
54 | if survey_path == '-':
|
55 | p2 = 'osh.html'
|
56 | try:
|
57 | z.getinfo(p2)
|
58 | survey_path = p2
|
59 | except KeyError:
|
60 | pass
|
61 |
|
62 | if survey_path == '-':
|
63 | p3 = 'index.html'
|
64 | try:
|
65 | z.getinfo(p3)
|
66 | survey_path = p3
|
67 | except KeyError:
|
68 | pass
|
69 |
|
70 | cpp_summary_path = 'cpp/osh-summary.html'
|
71 | try:
|
72 | h2 = z.getinfo(cpp_summary_path)
|
73 | except KeyError:
|
74 | cpp_summary_path = '-'
|
75 |
|
76 | print('\t'.join([date, version, spec_wwz, survey_path, cpp_summary_path]))
|
77 |
|
78 |
|
79 | if __name__ == '__main__':
|
80 | try:
|
81 | main(sys.argv)
|
82 | except RuntimeError as e:
|
83 | print('FATAL: %s' % e, file=sys.stderr)
|
84 | sys.exit(1)
|