releases/openstack_releases/cmds/release_notes.py
Doug Hellmann 70be592ba5 add release notes output to the list-changes job
Import the release-notes command from the release-tools repository and
integrate it with the list-changes command so that we see the release
notes for an upcoming release. This lets us review the release notes
output for warnings (like not having a documentation page linked) and
errors (such as reno failing to work).

Change-Id: I710606fe44601fe5414bfc82f25894319f16e558
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
2017-10-11 13:44:46 -04:00

131 lines
5.1 KiB
Python

# 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.
import argparse
import os
from openstack_releases import release_notes
def main():
parser = argparse.ArgumentParser(
prog='release_notes',
description=__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument("repo", metavar='path', action="store",
help="repository directory, for example"
" 'openstack/cliff'",
)
parser.add_argument('repo_name', action='store',
help='The name of the repository being released',
)
parser.add_argument("start_revision", metavar='revision',
action="store",
help="start revision, for example '1.8.0'",
)
parser.add_argument("end_revision", metavar='revision',
action="store",
nargs='?',
help="end revision, for example '1.9.0'"
" (default: HEAD)",
default="HEAD")
parser.add_argument('--changes-only',
action='store_true',
default=False,
help='List only the change summary, without details',
)
parser.add_argument('--include-pypi-link',
action='store_true',
default=False,
help='include a pypi hyperlink for the library',
)
parser.add_argument('--first-release',
action='store_true',
default=False,
help='this is the first release of the project',
)
parser.add_argument("--skip-requirement-merges",
action='store_true', default=False,
help="skip requirement update commit messages"
" (default: False)")
parser.add_argument("--show-dates",
action='store_true', default=False,
help="show dates in the change log")
parser.add_argument("--series", "-s",
default="",
help="release series name, such as 'kilo'",
)
parser.add_argument("--stable",
default=False,
action='store_true',
help="this is a stable release",
)
parser.add_argument('--description',
action='store',
help=('A brief description for the repository being '
'released'),
)
parser.add_argument('--publishing-dir-name',
action='store',
help=('The directory on tarballs.openstack.org '
'and docs.openstack.org containing the '
'published artifacts for this package'),
)
email_group = parser.add_argument_group('email settings')
email_group.add_argument(
"--email", "-e",
action='store_true', default=False,
help="output a fully formed email message",
)
email_group.add_argument(
"--email-reply-to",
default="openstack-dev@lists.openstack.org",
help="follow-up for discussions, defaults to %(default)s",
)
email_group.add_argument(
"--email-from", "--from",
default=os.environ.get('EMAIL', ''),
help="source of the email, defaults to $EMAIL",
)
email_group.add_argument(
"--email-tags",
default="",
help="extra topic tags for email subject, e.g. '[oslo]'",
)
args = parser.parse_args()
repo_path = os.path.abspath(args.repo)
notes = release_notes.generate_release_notes(
repo=args.repo,
repo_path=repo_path,
start_revision=args.start_revision,
end_revision=args.end_revision,
show_dates=args.show_dates,
skip_requirement_merges=args.skip_requirement_merges,
is_stable=args.stable,
series=args.series,
email=args.email,
email_from=args.email_from,
email_reply_to=args.email_reply_to,
email_tags=args.email_tags,
include_pypi_link=args.include_pypi_link,
changes_only=args.changes_only,
first_release=args.first_release,
repo_name=args.repo_name,
description=args.description,
publishing_dir_name=args.publishing_dir_name or args.repo_name,
)
print(notes)
return 0