add 'most recent' table to each page

Change-Id: I03ff22e7f86c931343f176727b6f8a5fc67b331f
This commit is contained in:
Doug Hellmann
2015-08-20 11:27:03 -07:00
parent a6504c20f9
commit 3fefe6073e

View File

@@ -53,6 +53,7 @@ class DeliverableDirective(rst.Directive):
def run(self):
env = self.state.document.settings.env
app = env.app
source_name = '<' + __name__ + '>'
series = self.options.get('series')
if not series:
@@ -64,11 +65,33 @@ class DeliverableDirective(rst.Directive):
result = ViewList()
# Read all of the deliverable data for the series.
deliverables = []
for filename in sorted(glob.glob('deliverables/%s/*.yaml' % series)):
app.info('[deliverables] reading %s' % filename)
with open(filename, 'r') as f:
deliverable_info = yaml.load(f.read())
deliverable_name = os.path.basename(filename)[:-5] # strip .yaml ext
with open(filename, 'r') as f:
deliverables.append((deliverable_name,
filename,
yaml.load(f.read())))
# Build a table of the most recent version of each deliverable.
most_recent = []
for deliverable_name, filename, deliverable_info in deliverables:
version = deliverable_info.get('releases', {})[-1].get('version', 'unreleased')
most_recent.append((deliverable_name, version))
result.append('.. rubric:: Most Recent', source_name)
result.append('', source_name)
_list_table(lambda t: result.append(t, source_name),
['Deliverable', 'Version'],
most_recent,)
# Show the detailed history of the deliverables within the series.
for deliverable_name, filename, deliverable_info in deliverables:
# These closures need to be redefined in each iteration of
# the loop because they use the filename.
@@ -89,7 +112,8 @@ class DeliverableDirective(rst.Directive):
_title(deliverable_name, '=')
for release in deliverable_info.get('releases', []):
app.info('[deliverables] release %s' % release['version'])
app.info('[deliverables] %s release %s' %
(deliverable_name, release['version']))
_rubric(release['version'])
_list_table(
_add, ['Repo', 'SHA'],