update_versions.py
Go to the documentation of this file.
1 #!/usr/bin/env python3
2 
3 import os
4 import subprocess
5 import sys
6 
7 def version_to_value(version):
8  return list(map(int, version.lstrip('v').split('.')))
9 
10 if __name__ == "__main__":
11  entry_template = """\
12  <tr>
13  <td>%(version)s%(current)s</td>
14  <td><a href="/fusion-engine/%(version)s/index.html">Documentation</a></td>
15  <td><a href="https://github.com/PointOneNav/fusion-engine-client/releases/tag/%(version)s">Release Notes</a></td>
16  </tr>
17 """
18 
19  entry_template_no_docs = """\
20  <tr>
21  <td>%(version)s%(current)s</td>
22  <td></td>
23  <td><a href="https://github.com/PointOneNav/fusion-engine-client/releases/tag/%(version)s">Release Notes</a></td>
24  </tr>
25 """
26 
27  # List available versions.
28 
29  versions = subprocess.check_output(['git', 'tag']).decode('utf-8').strip().split()
30  versions.sort(key=version_to_value, reverse=True)
31  latest_version = versions[0]
32 
33  FIRST_RELEASE_WITH_DOCS = [1, 4, 0]
34 
35  # Find the docs/ directory.
36  docs_dir = os.path.dirname(os.path.abspath(__file__))
37 
38  # Set version number in Doxyfile.
39  if len(sys.argv) > 1:
40  current_version = sys.argv[1]
41 
42  with open('%s/../Doxyfile' % docs_dir, 'r') as f:
43  file_contents = f.read()
44  file_contents = file_contents.format(current_version=current_version)
45  with open('%s/../Doxyfile.version' % docs_dir, 'w') as f:
46  f.write(file_contents)
47 
48  # Generate include_header.js.
49  with open('%s/include_header.js.template' % docs_dir, 'r') as f:
50  file_contents = f.read()
51  with open('%s/include_header.js' % docs_dir, 'w') as f:
52  f.write(file_contents % {'latest_version': latest_version})
53 
54  # Generate versions.html.
55  with open('%s/versions.html.template' % docs_dir, 'r') as f:
56  file_contents = f.read()
57 
58  table_contents = ""
59  for version in versions:
60  value = version_to_value(version)
61  if value >= FIRST_RELEASE_WITH_DOCS:
62  template = entry_template
63  else:
64  template = entry_template_no_docs
65 
66  table_contents += template % {'version': version,
67  'current': ' (Current)' if version == latest_version else ''}
68 
69  with open('%s/versions.html' % docs_dir, 'w') as f:
70  f.write(file_contents % {'content': table_contents})
version_to_value