osc-staging: provide --cleanup option for unignore.
This commit is contained in:
parent
9d322ee501
commit
c6b37d60ab
@ -93,6 +93,7 @@ def _full_project_name(self, project):
|
||||
help='print the plugin version')
|
||||
@cmdln.option('--no-freeze', dest='no_freeze', action='store_true',
|
||||
help='force the select command ignoring the time from the last freeze')
|
||||
@cmdln.option('--cleanup', action='store_true', help='cleanup after completing operation')
|
||||
@cmdln.option('--no-cleanup', dest='no_cleanup', action='store_true',
|
||||
help='do not cleanup remaining packages in staging projects after accept')
|
||||
@cmdln.option('--no-bootstrap', dest='bootstrap', action='store_false', default=True,
|
||||
@ -136,7 +137,9 @@ def do_staging(self, subcmd, opts, *args):
|
||||
|
||||
"ignore" will ignore a request from "list" and "adi" commands until unignored
|
||||
|
||||
"unignore" will remove from ignore list
|
||||
"unignore" will remove from requests from ignore list
|
||||
If the --cleanup flag is included then all ignored requests that were
|
||||
changed from state new or review more than 3 days ago will be removed.
|
||||
|
||||
"list" will list/supersede requests for ring packages or all if no rings.
|
||||
The package list is used to limit what requests are superseded when
|
||||
@ -205,7 +208,7 @@ def do_staging(self, subcmd, opts, *args):
|
||||
osc staging freeze [--no-boostrap] PROJECT...
|
||||
osc staging frozenage PROJECT...
|
||||
osc staging ignore [-m MESSAGE] REQUEST...
|
||||
osc staging unignore REQUEST...|all
|
||||
osc staging unignore [--cleanup] REQUEST...|all
|
||||
osc staging list [--supersede] [PACKAGE...]
|
||||
osc staging select [--no-freeze] [--move [--from PROJECT] STAGING REQUEST...
|
||||
osc staging select [--no-freeze] [[--interactive] [--filter-by...] [--group-by...]] [STAGING...] [REQUEST...]
|
||||
@ -229,8 +232,10 @@ def do_staging(self, subcmd, opts, *args):
|
||||
min_args, max_args = 1, None
|
||||
elif cmd == 'adi':
|
||||
min_args, max_args = 0, None
|
||||
elif cmd in ('ignore', 'unignore'):
|
||||
elif cmd == 'ignore':
|
||||
min_args, max_args = 1, None
|
||||
elif cmd == 'unignore':
|
||||
min_args, max_args = 0, None
|
||||
elif cmd in ('list', 'accept'):
|
||||
min_args, max_args = 0, None
|
||||
elif cmd in ('cleanup_rings', 'acheck'):
|
||||
@ -408,7 +413,7 @@ def do_staging(self, subcmd, opts, *args):
|
||||
elif cmd == 'ignore':
|
||||
IgnoreCommand(api).perform(args[1:], opts.message)
|
||||
elif cmd == 'unignore':
|
||||
UnignoreCommand(api).perform(args[1:])
|
||||
UnignoreCommand(api).perform(args[1:], opts.cleanup)
|
||||
elif cmd == 'list':
|
||||
ListCommand(api).perform(args[1:], supersede=opts.supersede)
|
||||
elif cmd == 'adi':
|
||||
|
@ -1,3 +1,6 @@
|
||||
import dateutil.parser
|
||||
from datetime import datetime
|
||||
|
||||
from osc.core import get_request
|
||||
|
||||
|
||||
@ -5,7 +8,7 @@ class UnignoreCommand(object):
|
||||
def __init__(self, api):
|
||||
self.api = api
|
||||
|
||||
def perform(self, request_ids):
|
||||
def perform(self, request_ids, cleanup=False):
|
||||
"""
|
||||
Unignore a request by removing from ignore list.
|
||||
"""
|
||||
@ -22,6 +25,18 @@ class UnignoreCommand(object):
|
||||
print('Removing {}'.format(request_id))
|
||||
del requests_ignored[request_id]
|
||||
|
||||
if cleanup:
|
||||
now = datetime.now()
|
||||
for request_id in set(requests_ignored):
|
||||
request = get_request(self.api.apiurl, str(request_id))
|
||||
if request.state.name not in ('new', 'review'):
|
||||
changed = dateutil.parser.parse(request.state.when)
|
||||
diff = now - changed
|
||||
if diff.days > 3:
|
||||
print('Removing {} which was {} {} days ago'
|
||||
.format(request_id, request.state.name, diff.days))
|
||||
del requests_ignored[request_id]
|
||||
|
||||
diff = length - len(requests_ignored)
|
||||
if diff > 0:
|
||||
print('Unignoring {} requests'.format(diff))
|
||||
|
@ -1,6 +1,7 @@
|
||||
lxml
|
||||
PyYAML
|
||||
pycurl
|
||||
python-dateutil
|
||||
urlgrabber
|
||||
pyxdg
|
||||
cmdln
|
||||
|
Loading…
x
Reference in New Issue
Block a user