| 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)
 |