diff --git a/README.rst b/README.rst index 163965bf85..3274bdaf76 100644 --- a/README.rst +++ b/README.rst @@ -451,3 +451,5 @@ easy as ``pip install .`` in this repository directory. * ``make-dashboard`` produces a CSV file that can be imported into Google docs (or any other spreadsheet) for tracking the milestone-based projects at the end of the cycle +* ``init-series`` initializes a new deliverable directory with stub + files based on the previous release. diff --git a/openstack_releases/cmds/init_series.py b/openstack_releases/cmds/init_series.py new file mode 100644 index 0000000000..c55a03964c --- /dev/null +++ b/openstack_releases/cmds/init_series.py @@ -0,0 +1,70 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from __future__ import print_function + +import argparse +import os.path + +import openstack_releases +from openstack_releases import deliverable + +import yaml + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument( + 'old_series', + help='the previous release series, such as "newton"', + ) + parser.add_argument( + 'new_series', + help='the new release series, such as "ocata"', + ) + parser.add_argument( + '--deliverables-dir', + default=openstack_releases.deliverable_dir, + help='location of deliverable files', + ) + args = parser.parse_args() + + all_deliv = deliverable.Deliverables( + root_dir=args.deliverables_dir, + collapse_history=False, + ) + + new_deliverables = set( + name + for team, series, name, data in + all_deliv.get_deliverables(None, args.new_series) + ) + + outdir = os.path.join(args.deliverables_dir, args.new_series) + if not os.path.exists(outdir): + print('creating output directory {}'.format(outdir)) + os.mkdir(outdir) + + old_deliverables = all_deliv.get_deliverables(None, args.old_series) + for team, series, name, data in old_deliverables: + if name in new_deliverables: + continue + # Clean up some series-specific data that should not be copied + # over. + for key in ['releases', 'branches', 'release-notes']: + if key in data: + del data[key] + outfilename = os.path.join(outdir, name + '.yaml') + with open(outfilename, 'w') as f: + print('{} created'.format(outfilename)) + f.write('---\n') + yaml.dump(data, f, default_flow_style=False) diff --git a/setup.cfg b/setup.cfg index 4476366003..d55c0e752c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -31,6 +31,7 @@ console_scripts = check-diff-start = openstack_releases.cmds.check_diff_start:main list-deliverables = openstack_releases.cmds.list_deliverables:main make-dashboard = openstack_releases.cmds.dashboard:main + init-series = openstack_releases.cmds.init_series:main [extras] sphinxext =