diff --git a/osc/commandline.py b/osc/commandline.py index ca0ba1a1..b6cbdee5 100755 --- a/osc/commandline.py +++ b/osc/commandline.py @@ -1558,6 +1558,10 @@ class Osc(cmdln.Cmdln): help='Delete all binary packages for a specific repository') @cmdln.option('--build-disabled', action='store_true', help='Delete all binaries of packages for which the build is disabled') + @cmdln.option('--build-failed', action='store_true', + help='Delete all binaries of packages for which the build failed') + @cmdln.option('--broken', action='store_true', + help='Delete all binaries of packages for which the package source is bad') def do_wipebinaries(self, subcmd, opts, *args): """${cmd_name}: Delete all binary packages of a certain project/package @@ -1579,8 +1583,21 @@ class Osc(cmdln.Cmdln): package = args[1] else: package = None - - print wipebinaries(conf.config['apiurl'], args[0], package, opts.arch, opts.repo, opts.build_disabled) + + codes = [] + if opts.build_disabled: + codes.append('disabled') + if opts.build_failed: + codes.append('failed') + if opts.broken: + codes.append('broken') + + if len(codes) == 0: + codes.append(None) + + # make a new request for each code= parameter + for code in codes: + print wipebinaries(conf.config['apiurl'], args[0], package, opts.arch, opts.repo, code) @cmdln.option('--repos-baseurl', action='store_true', diff --git a/osc/core.py b/osc/core.py index 0a046889..3474ef48 100755 --- a/osc/core.py +++ b/osc/core.py @@ -1815,7 +1815,7 @@ def abortbuild(apiurl, project, package=None, arch=None, repo=None): return root.get('code') -def wipebinaries(apiurl, project, package=None, arch=None, repo=None, build_disabled=None): +def wipebinaries(apiurl, project, package=None, arch=None, repo=None, code=None): query = [] query.append('cmd=wipe') if package: @@ -1824,8 +1824,8 @@ def wipebinaries(apiurl, project, package=None, arch=None, repo=None, build_disa query.append('arch=%s' % quote_plus(arch)) if repo: query.append('repository=%s' % quote_plus(repo)) - if build_disabled: - query.append('code=disabled') + if code: + query.append('code=%s' % quote_plus(code)) u = makeurl(apiurl, ['build', project], query) try: @@ -1838,8 +1838,8 @@ def wipebinaries(apiurl, project, package=None, arch=None, repo=None, build_disa err_str += ' arch %s' % arch if repo: err_str += ' repository %s' % repo - if build_disabled: - err_str += ' code=disabled' + if code: + err_str += ' code=%s' % code print >> sys.stderr, err_str print >> sys.stderr, u print >> sys.stderr, e