You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.7 KiB

#!/usr/bin/python2.7
# Copyright (C) 2008, 2009, 2010, 2011, 2012 Canonical Ltd.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 3 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""Adjust SRU bugs after accepting the corresponding update."""
from __future__ import print_function
from optparse import OptionParser
import re
import sys
import launchpadlib.errors
from launchpadlib.launchpad import Launchpad
from sru_workflow import process_bug
CONSUMER_KEY = "sru-accept"
def append_series(option, opt_str, value, parser):
if value.endswith('-proposed'):
value = value[:-9]
parser.values.ensure_value(option.dest, []).append(value)
if __name__ == '__main__':
parser = OptionParser(
usage="Usage: %prog [options] -v version [options] bug [bug ...]")
parser.add_option("-l", "--launchpad", dest="launchpad_instance",
default="production")
parser.add_option('-s', action='callback', callback=append_series,
type='string', dest='targets',
help='accept for SUITE(-proposed) instead of current '
'stable release',
metavar='SUITE')
parser.add_option('-p', dest='package',
help='only change tasks for a particular source package',
default=None,
metavar='SRCPACKAGE')
parser.add_option('-v', dest='version',
help='the version of the package being accepted',
default=None,
metavar='VERSION')
options, args = parser.parse_args()
if not options.version:
print('A package version (-v) was not provided.')
sys.exit(1)
launchpad = Launchpad.login_with(CONSUMER_KEY, options.launchpad_instance)
if not options.targets:
options.targets = [[
series.name for series in launchpad.distributions["ubuntu"].series
if series.status == "Current Stable Release"][0]]
try:
for num in args:
for series in options.targets:
process_bug(
launchpad, options.package, options.version, series, num)
except launchpadlib.errors.HTTPError as err:
print("There was an error:")
print(err.content)