1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-12-26 09:56:13 +01:00

add a buildlogurl support to osc remotebuildlog command

This commit is contained in:
Michal Vyskocil 2010-01-28 13:20:11 +01:00
parent 293d03536f
commit 1d44150c7f
3 changed files with 31 additions and 6 deletions

1
NEWS
View File

@ -3,6 +3,7 @@
- fix "osc patchinfo" command (crashed before)
- fixed SSL proxy support
- fixed meta attribute create and set calls
- osc remotebuildlog supports a buildlogurl
0.125
- add "osc pull" command to fetch and merge changes in the link target

View File

@ -2789,6 +2789,8 @@ Please submit there instead, or use --nodevelproject to force direct submission.
@cmdln.alias('rbl')
@cmdln.alias('rbuildlog')
@cmdln.option('-s', '--start', metavar='START',
help='get log starting from the offset')
def do_remotebuildlog(self, subcmd, opts, *args):
"""${cmd_name}: Shows the build log of a package
@ -2801,13 +2803,23 @@ Please submit there instead, or use --nodevelproject to force direct submission.
osc remotebuildlog project/package/repository/arch
${cmd_option_list}
"""
args = slash_split(args)
if len(args) < 4:
raise oscerr.WrongArgs('Too few arguments.')
elif len(args) > 4:
raise oscerr.WrongArgs('Too many arguments.')
if len(args) == 1:
apiurl, project, package, repository, arch = parse_buildlogurl(args[0])
else:
args = slash_split(args)
apiurl = conf.config['apiurl']
if len(args) < 4:
raise oscerr.WrongArgs('Too few arguments.')
elif len(args) > 4:
raise oscerr.WrongArgs('Too many arguments.')
else:
project, package, repository, arch = args
print_buildlog(conf.config['apiurl'], *args)
offset=0
if opts.start:
offset = int(opts.start)
print_buildlog(apiurl, project, package, repository, arch, offset)
@cmdln.alias('tr')

View File

@ -33,6 +33,7 @@ except ImportError:
DISTURL_RE = re.compile(r"^(?P<bs>.*)://(?P<apiurl>.*?)/(?P<project>.*?)/(?P<repository>.*?)/(?P<revision>.*)-(?P<source>.*)$")
BUILDLOGURL_RE = re.compile(r"^(?P<apiurl>https://.*?)/build/(?P<project>.*?)/(?P<repository>.*?)/(?P<arch>.*?)/(?P<package>.*?)/_log$")
BUFSIZE = 1024*1024
store = '.osc'
@ -1705,6 +1706,17 @@ def parse_disturl(disturl):
apiurl = 'https://api.' + ".".join(apiurl.split('.')[1:])
return (apiurl, m.group('project'), m.group('source'), m.group('repository'), m.group('revision'))
def parse_buildlogurl(buildlogurl):
"""Parse a build log url, returns a tuple (apiurl, project, package,
repository, arch), else raises oscerr.WrongArgs exception"""
global BUILDLOGURL_RE
m = BUILDLOGURL_RE.match(buildlogurl)
if not m:
raise oscerr.WrongArgs("`%s' does not look like url with a build log" % buildlogurl)
return (m.group('apiurl'), m.group('project'), m.group('package'), m.group('repository'), m.group('arch'))
def slash_split(l):
"""Split command line arguments like 'foo/bar' into 'foo' 'bar'.