diff --git a/openstack_releases/cmds/list_changes.py b/openstack_releases/cmds/list_changes.py index d9888f6ebb..c67e131cc6 100644 --- a/openstack_releases/cmds/list_changes.py +++ b/openstack_releases/cmds/list_changes.py @@ -29,8 +29,10 @@ import subprocess import sys import tempfile +import pyfiglet import requests +from openstack_releases import defaults from openstack_releases import gitutils from openstack_releases import governance from openstack_releases import release_notes @@ -42,6 +44,10 @@ def header(title): print('-' * len(title)) +def banner(text): + pyfiglet.print_figlet(text, font='banner', width=120) + + def git_show(workdir, repo, title, ref): header('%s %s' % (title, ref)) cmd = ['git', 'log', '-n', '1', '--decorate', '--format=medium', ref] @@ -235,6 +241,8 @@ def main(): else: default_model = 'no release model specified' + stable_branch = series not in ['_independent', defaults.RELEASE] + # By default assume the project does not use milestones. header('Release model') print(deliverable_info.get('release-model', default_model)) @@ -253,10 +261,14 @@ def main(): if deliverable: print('found deliverable %s' % deliverable_name) for rn, repo in sorted(deliverable.repositories.items()): + follows_stable_policy = 'stable:follows-policy' in repo.tags print('\nrepo %s\ntags:' % repo.name) for t in repo.tags: print(' %s' % t) print('') + if stable_branch and follows_stable_policy: + banner('Needs Stable Policy Review') + print() else: print(('no deliverable %r found for team %r, ' 'cannot report on governance status') % diff --git a/requirements.txt b/requirements.txt index cf43f5a3f2..947b9ce864 100644 --- a/requirements.txt +++ b/requirements.txt @@ -28,3 +28,5 @@ Jinja2>=2.6 # BSD License (3 clause) parawrap reno>=2.0.0 sphinx>=1.6.2 # BSD + +pyfiglet>=0.7.5