From 011426d885d9428e7bdca6cce7d4b21c847fe470 Mon Sep 17 00:00:00 2001 From: Michal Vyskocil Date: Fri, 15 May 2009 07:16:26 +0000 Subject: [PATCH] -r|--repo and -a|--arch options for results, rresults and results_meta commands --- NEWS | 3 +++ osc/commandline.py | 20 +++++++++++++++++--- osc/core.py | 10 +++++++--- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index f7ef2221..802bee39 100644 --- a/NEWS +++ b/NEWS @@ -20,6 +20,9 @@ - new option for copypac * -r to specify source revision * -m to specify a comment (and send default comment if not specified) +- new option to results(r), results_meta (including -l|--lastbuild) and rresults: + * -r|--repo to specify a repository(repositories) + * -a|--arch to specify a architexure(s) 0.117: - support checkout of single package via "osc co PACKAGE" when local dir is project diff --git a/osc/commandline.py b/osc/commandline.py index 016bb40b..8e72a1d4 100755 --- a/osc/commandline.py +++ b/osc/commandline.py @@ -1753,6 +1753,12 @@ Please submit there instead, or use --nodevelproject to force direct submission. print '\n'.join(get_platforms(conf.config['apiurl'])) + @cmdln.option('-l', '--last-build', action='store_true', + help='show last build results (succeeded/failed/unknown)') + @cmdln.option('-r', '--repo', action='append', + help='Show results only for specified repo(s)') + @cmdln.option('-a', '--arch', action='append', + help='Show results only for specified architecture(s)') def do_results_meta(self, subcmd, opts, *args): """${cmd_name}: Shows raw build results of a package @@ -1768,12 +1774,16 @@ Please submit there instead, or use --nodevelproject to force direct submission. pacs = findpacs(args) for pac in pacs: - print ''.join(show_results_meta(pac.apiurl, pac.prjname, package=pac.name)) + print ''.join(show_results_meta(pac.apiurl, pac.prjname, pac.name, opts.last_build, opts.repo, opts.arch)) @cmdln.alias('r') @cmdln.option('-l', '--last-build', action='store_true', help='show last build results (succeeded/failed/unknown)') + @cmdln.option('-r', '--repo', action='append', + help='Show results only for specified repo(s)') + @cmdln.option('-a', '--arch', action='append', + help='Show results only for specified architecture(s)') def do_results(self, subcmd, opts, *args): """${cmd_name}: Shows the build results of a package @@ -1787,11 +1797,15 @@ Please submit there instead, or use --nodevelproject to force direct submission. pacs = findpacs(args) for pac in pacs: - print '\n'.join(get_results(pac.apiurl, pac.prjname, pac.name, opts.last_build)) + print '\n'.join(get_results(pac.apiurl, pac.prjname, pac.name, opts.last_build, opts.repo, opts.arch)) @cmdln.option('-l', '--last-build', action='store_true', help='show last build results (succeeded/failed/unknown)') + @cmdln.option('-r', '--repo', action='append', + help='Show results only for specified repo(s)') + @cmdln.option('-a', '--arch', action='append', + help='Show results only for specified architecture(s)') def do_rresults(self, subcmd, opts, *args): """${cmd_name}: Shows the build results of a remote package @@ -1809,7 +1823,7 @@ Please submit there instead, or use --nodevelproject to force direct submission. raise oscerr.WrongArgs('Too many arguments.') apiurl = conf.config['apiurl'] - print '\n'.join(get_results(apiurl, args[0], args[1], opts.last_build)) + print '\n'.join(get_results(apiurl, args[0], args[1], opts.last_build, opts.repo, opts.arch)) @cmdln.option('-q', '--hide-legend', action='store_true', diff --git a/osc/core.py b/osc/core.py index fe0ef080..701cc264 100755 --- a/osc/core.py +++ b/osc/core.py @@ -2705,13 +2705,17 @@ def get_binarylist_published(apiurl, prj, repo, arch): return r -def show_results_meta(apiurl, prj, package=None, lastbuild=None): +def show_results_meta(apiurl, prj, package=None, lastbuild=None, repository=[], arch=[]): query = {} if package: query['package'] = package if lastbuild: query['lastbuild'] = 1 u = makeurl(apiurl, ['build', prj, '_result'], query=query) + for repo in repository: + u = u + '&repository=%s' % repo + for a in arch: + u = u + '&arch=%s' % a f = http_GET(u) return f.readlines() @@ -2722,11 +2726,11 @@ def show_prj_results_meta(apiurl, prj): return f.readlines() -def get_results(apiurl, prj, package, lastbuild=None): +def get_results(apiurl, prj, package, lastbuild=None, repository=[], arch=[]): r = [] result_line_templ = '%(rep)-15s %(arch)-10s %(status)s' - f = show_results_meta(apiurl, prj, package=package, lastbuild=lastbuild) + f = show_results_meta(apiurl, prj, package, lastbuild, repository, arch) tree = ET.parse(StringIO(''.join(f))) root = tree.getroot()