70be592ba5
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>
131 lines
5.1 KiB
Python
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
|