1
0
mirror of https://github.com/openSUSE/osc.git synced 2025-02-04 10:36:17 +01:00

- improve usage info on meta command

- if PUT on metadata fails with a 500, and http_debug is True, print out the
  body of the server reply
- rename update_pacmeta() to update_local_pacmeta() for clarity
- rename update_filesmeta() to update_local_filesmeta() for clarity
This commit is contained in:
Dr. Peter Poeml 2007-07-16 13:40:58 +00:00
parent 3aa108d32a
commit 4944828bf1
2 changed files with 32 additions and 27 deletions

View File

@ -146,12 +146,19 @@ class Osc(cmdln.Cmdln):
packages, or users. The type of metadata is specified by the word after packages, or users. The type of metadata is specified by the word after
"meta", like e.g. "meta prj". "meta", like e.g. "meta prj".
prj denotes metadata of a buildservice project.
prjconf denotes the (build) configuration of a project.
pkg denotes metadata of a buildservice package.
user denotes the metadata of a user.
With the --edit switch, the metadata can be edited. Per default, osc With the --edit switch, the metadata can be edited. Per default, osc
opens the program specified by the environmental variable EDITOR with a opens the program specified by the environmental variable EDITOR with a
temporary file. Alternatively, content to be saved can be supplied via temporary file. Alternatively, content to be saved can be supplied via
the --file switch. the --file switch.
The --create switch is subject to discussion and not implemented. The --create switch is subject to discussion and not implemented. The
current behaviour is to create a non-existing resource implicitely, if
while it is edited.
usage: usage:
osc meta <prj|pkg|prjconf|user> [-e|--edit [-f|--file] [-c|--create]] ARGS... osc meta <prj|pkg|prjconf|user> [-e|--edit [-f|--file] [-c|--create]] ARGS...
@ -184,7 +191,6 @@ class Osc(cmdln.Cmdln):
if not opts.edit: if not opts.edit:
sys.stdout.write(''.join(show_project_meta(conf.config['apiurl'], project))) sys.stdout.write(''.join(show_project_meta(conf.config['apiurl'], project)))
else: else:
print 'XXX editing prj'
edit_meta(metatype='prj', edit_meta(metatype='prj',
path_args = quote_plus(project), path_args = quote_plus(project),
template_args = (project, conf.config['user'])) template_args = (project, conf.config['user']))
@ -195,7 +201,6 @@ class Osc(cmdln.Cmdln):
if not opts.edit: if not opts.edit:
sys.stdout.write(''.join(show_package_meta(conf.config['apiurl'], project, package))) sys.stdout.write(''.join(show_package_meta(conf.config['apiurl'], project, package)))
else: else:
print 'XXX editing pac'
edit_meta(metatype='pkg', edit_meta(metatype='pkg',
path_args = (quote_plus(project), quote_plus(package)), path_args = (quote_plus(project), quote_plus(package)),
template_args = (package, conf.config['user'])) template_args = (package, conf.config['user']))
@ -206,7 +211,6 @@ class Osc(cmdln.Cmdln):
if not opts.edit: if not opts.edit:
sys.stdout.write(''.join(show_project_conf(conf.config['apiurl'], project))) sys.stdout.write(''.join(show_project_conf(conf.config['apiurl'], project)))
else: else:
print 'XXX editing prj'
edit_meta(metatype='prjconf', edit_meta(metatype='prjconf',
path_args = quote_plus(project), path_args = quote_plus(project),
template_args = None) template_args = None)
@ -219,7 +223,6 @@ class Osc(cmdln.Cmdln):
if r: if r:
sys.stdout.write(''.join(r)) sys.stdout.write(''.join(r))
else: else:
print 'XXX editing user'
edit_meta(metatype='user', edit_meta(metatype='user',
path_args = (quote_plus(user)), path_args = (quote_plus(user)),
template_args = (user, user)) template_args = (user, user))
@ -441,7 +444,7 @@ class Osc(cmdln.Cmdln):
for p in pacs: for p in pacs:
p.read_meta_from_spec(specfile) p.read_meta_from_spec(specfile)
p.update_pac_meta() p.update_package_meta()
@cmdln.alias('di') @cmdln.alias('di')
@ -849,7 +852,7 @@ class Osc(cmdln.Cmdln):
print print
print 'Committed revision %s.' % p.rev print 'Committed revision %s.' % p.rev
p.update_filesmeta() p.update_local_filesmeta()
p.write_deletelist() p.write_deletelist()
@ -915,7 +918,7 @@ class Osc(cmdln.Cmdln):
saved_modifiedfiles = [ f for f in p.filenamelist if p.status(f) == 'M' ] saved_modifiedfiles = [ f for f in p.filenamelist if p.status(f) == 'M' ]
oldp = p oldp = p
p.update_filesmeta(rev) p.update_local_filesmeta(rev)
p = Package(p.dir) p = Package(p.dir)
# which files do no longer exist upstream? # which files do no longer exist upstream?
@ -953,7 +956,7 @@ class Osc(cmdln.Cmdln):
pass pass
p.update_pacmeta() p.update_local_pacmeta()
#print ljust(p.name, 45), 'At revision %s.' % p.rev #print ljust(p.name, 45), 'At revision %s.' % p.rev
print 'At revision %s.' % p.rev print 'At revision %s.' % p.rev

View File

@ -400,13 +400,21 @@ class Package:
def update_filesmeta(self, revision=None): def update_local_filesmeta(self, revision=None):
"""
Update the local _files file in the store.
It is replaced with the version pulled from upstream.
"""
meta = ''.join(show_files_meta(self.apiurl, self.prjname, self.name, revision)) meta = ''.join(show_files_meta(self.apiurl, self.prjname, self.name, revision))
f = open(os.path.join(self.storedir, '_files'), 'w') f = open(os.path.join(self.storedir, '_files'), 'w')
f.write(meta) f.write(meta)
f.close() f.close()
def update_pacmeta(self): def update_local_pacmeta(self):
"""
Update the local _meta file in the store.
It is replaced with the version pulled from upstream.
"""
meta = ''.join(show_package_meta(self.apiurl, self.prjname, self.name)) meta = ''.join(show_package_meta(self.apiurl, self.prjname, self.name))
f = open(os.path.join(self.storedir, '_meta'), 'w') f = open(os.path.join(self.storedir, '_meta'), 'w')
f.write(meta) f.write(meta)
@ -552,25 +560,18 @@ rev: %s
self.descr = descr self.descr = descr
def update_pac_meta(self, template=new_package_templ): # n.b.: not the same as Package.update_pacmeta def update_package_meta(self):
import tempfile """
for the updatepacmetafromspec subcommand
"""
import tempfile
(fd, filename) = tempfile.mkstemp(prefix = 'osc_editmeta.', suffix = '.xml', dir = '/tmp') (fd, filename) = tempfile.mkstemp(prefix = 'osc_editmeta.', suffix = '.xml', dir = '/tmp')
try: m = ''.join(show_package_meta(self.apiurl, self.prjname, self.name))
u = makeurl(self.apiurl, ['source', self.prjname, self.name, '_meta'])
m = http_GET(u).readlines()
except urllib2.HTTPError, e:
if e.code == 404:
print 'package does not exist yet... creating it'
m = template % (pac, conf.config['user'])
else:
print >>sys.stderr, 'error getting package meta for project \'%s\' package \'%s\':' % (prj, pac)
print >>sys.stderr, e
sys.exit(1)
f = os.fdopen(fd, 'w') f = os.fdopen(fd, 'w')
f.write(''.join(m)) f.write(m)
f.close() f.close()
tree = ET.parse(filename) tree = ET.parse(filename)
@ -580,7 +581,7 @@ rev: %s
# FIXME: escape stuff for xml # FIXME: escape stuff for xml
print '*' * 36, 'old', '*' * 36 print '*' * 36, 'old', '*' * 36
print ''.join(m) print m
print '*' * 36, 'new', '*' * 36 print '*' * 36, 'new', '*' * 36
tree.write(sys.stdout) tree.write(sys.stdout)
print '*' * 72 print '*' * 72
@ -952,7 +953,8 @@ class metafile:
# this may be unhelpful... because it may just print a big blob of uninteresting # this may be unhelpful... because it may just print a big blob of uninteresting
# ichain html and javascript... however it could potentially be useful if the orign # ichain html and javascript... however it could potentially be useful if the orign
# server returns an information body # server returns an information body
#print >>sys.stderr, e.read() if conf.config['http_debug']:
print >>sys.stderr, e.read()
return False return False
else: else:
print >> sys.stderr, 'cannot save meta data - an unexpected error occured' print >> sys.stderr, 'cannot save meta data - an unexpected error occured'