Bug 1492128: [mozrelease] Add command to generate buglist for a given release; r=mtabara

Differential Revision: https://phabricator.services.mozilla.com/D10154

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Tom Prince 2018-10-30 18:21:40 +00:00
parent 14bf597b59
commit d8cec76a00
2 changed files with 81 additions and 2 deletions

View File

@ -47,6 +47,7 @@ MACH_MODULES = [
'python/mozbuild/mozbuild/backend/mach_commands.py',
'python/mozbuild/mozbuild/compilation/codecomplete.py',
'python/mozbuild/mozbuild/frontend/mach_commands.py',
'python/mozrelease/mozrelease/mach_commands.py',
'taskcluster/mach_commands.py',
'testing/awsy/mach_commands.py',
'testing/firefox-ui/mach_commands.py',
@ -89,7 +90,7 @@ CATEGORIES = {
'ci': {
'short': 'CI',
'long': 'Taskcluster commands',
'priority': 59
'priority': 59,
},
'devenv': {
'short': 'Development Environment',
@ -106,13 +107,18 @@ CATEGORIES = {
'long': 'Potent potables and assorted snacks.',
'priority': 10,
},
'release': {
'short': 'Release automation',
'long': 'Commands for used in release automation.',
'priority': 5,
},
'disabled': {
'short': 'Disabled',
'long': 'The disabled commands are hidden by default. Use -v to display them. '
'These commands are unavailable for your current context, '
'run "mach <command>" to see why.',
'priority': 0,
}
},
}

View File

@ -0,0 +1,73 @@
# -*- coding: utf-8 -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from __future__ import absolute_import, print_function, unicode_literals
import sys
import logging
from mach.decorators import (
CommandArgument,
CommandProvider,
Command,
SubCommand,
)
from mozbuild.base import MachCommandBase
from mozilla_version.gecko import GeckoVersion
@CommandProvider
class MachCommands(MachCommandBase):
@Command('release', category="release",
description="Task that are part of the release process.")
def release(self):
"""
The release subcommands all relate to the release process.
"""
@SubCommand('release', 'buglist',
description="Generate list of bugs since the last release.")
@CommandArgument('--version',
required=True,
type=GeckoVersion.parse,
help="The version being built.")
@CommandArgument('--product',
required=True,
help="The product being built.")
@CommandArgument('--revision',
required=True,
help="The revision being built.")
def buglist(self, version, product, revision):
self.setup_logging()
from mozrelease.buglist_creator import create_bugs_url
print(create_bugs_url(
product=product,
current_version=version,
current_revision=revision,
))
def setup_logging(self, quiet=False, verbose=True):
"""
Set up Python logging for all loggers, sending results to stderr (so
that command output can be redirected easily) and adding the typical
mach timestamp.
"""
# remove the old terminal handler
old = self.log_manager.replace_terminal_handler(None)
# re-add it, with level and fh set appropriately
if not quiet:
level = logging.DEBUG if verbose else logging.INFO
self.log_manager.add_terminal_logging(
fh=sys.stderr, level=level,
write_interval=old.formatter.write_interval,
write_times=old.formatter.write_times)
# all of the taskgraph logging is unstructured logging
self.log_manager.enable_unstructured()