mirror of
https://github.com/openSUSE/osc.git
synced 2025-02-02 17:56:15 +01:00
Improve devel project commands.
Let "osc develproject" (with new alias "dp") display the devel package if it doesn't match the package name. Deprecate "--raw" option which only was a crude workaround for that anyway. Add "osc setdevelproject" (alias "sdp") command to change a package's devel project / package.
This commit is contained in:
parent
42f9f2bf3e
commit
3d72e60321
@ -522,10 +522,10 @@ class Osc(cmdln.Cmdln):
|
|||||||
run_editor(filename)
|
run_editor(filename)
|
||||||
|
|
||||||
@cmdln.alias('bsdevelproject')
|
@cmdln.alias('bsdevelproject')
|
||||||
@cmdln.option('-r', '--raw', action='store_true',
|
@cmdln.alias('dp')
|
||||||
help='print raw xml snippet')
|
@cmdln.option('-r', '--raw', action='store_true', help='deprecated option')
|
||||||
def do_develproject(self, subcmd, opts, *args):
|
def do_develproject(self, subcmd, opts, *args):
|
||||||
"""${cmd_name}: print the bsdevelproject of a package
|
"""${cmd_name}: print the devel project / package of a package
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
osc develproject PRJ PKG
|
osc develproject PRJ PKG
|
||||||
@ -544,13 +544,40 @@ class Osc(cmdln.Cmdln):
|
|||||||
else:
|
else:
|
||||||
raise oscerr.WrongArgs('need Project and Package')
|
raise oscerr.WrongArgs('need Project and Package')
|
||||||
|
|
||||||
devel = show_develproject(apiurl, project, package, opts.raw)
|
devprj, devpkg = show_devel_project(apiurl, project, package)
|
||||||
if devel is None:
|
if devprj is None:
|
||||||
print('\'%s/%s\' has no devel project' % (project, package))
|
print('%s / %s has no devel project' % (project, package))
|
||||||
elif opts.raw:
|
elif devpkg and devpkg != package:
|
||||||
ET.dump(devel)
|
print("%s %s" % (devprj, devpkg))
|
||||||
else:
|
else:
|
||||||
print(devel)
|
print(devprj)
|
||||||
|
|
||||||
|
@cmdln.alias('sdp')
|
||||||
|
def do_setdevelproject(self, subcmd, opts, *args):
|
||||||
|
"""${cmd_name}: Set the devel project / package of a package
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
osc setdevelproject [PRJ PKG] DEVPRJ [DEVPKG]
|
||||||
|
${cmd_option_list}
|
||||||
|
"""
|
||||||
|
args = slash_split(args)
|
||||||
|
apiurl = self.get_api_url()
|
||||||
|
|
||||||
|
devprj, devpkg = None, None
|
||||||
|
if len(args) == 3 or len(args) == 4:
|
||||||
|
project, package = args[0], args[1]
|
||||||
|
devprj = args[2]
|
||||||
|
if len(args) == 4:
|
||||||
|
devpkg = args[3]
|
||||||
|
elif len(args) >= 1 and len(args) <= 2:
|
||||||
|
project, package = store_read_project(os.curdir), store_read_package(os.curdir)
|
||||||
|
devprj = args[0]
|
||||||
|
if len(args) == 2:
|
||||||
|
devpkg = args[1]
|
||||||
|
else:
|
||||||
|
raise oscerr.WrongArgs('need at least DEVPRJ (and possibly DEVPKG)')
|
||||||
|
|
||||||
|
set_devel_project(apiurl, project, package, devprj, devpkg)
|
||||||
|
|
||||||
|
|
||||||
@cmdln.option('-a', '--attribute', metavar='ATTRIBUTE',
|
@cmdln.option('-a', '--attribute', metavar='ATTRIBUTE',
|
||||||
@ -1076,7 +1103,7 @@ class Osc(cmdln.Cmdln):
|
|||||||
if not opts.nodevelproject:
|
if not opts.nodevelproject:
|
||||||
devloc = None
|
devloc = None
|
||||||
try:
|
try:
|
||||||
devloc = show_develproject(apiurl, dst_project, dst_package)
|
devloc, _ = show_devel_project(apiurl, dst_project, dst_package)
|
||||||
except HTTPError:
|
except HTTPError:
|
||||||
print("""\
|
print("""\
|
||||||
Warning: failed to fetch meta data for '%s' package '%s' (new package?) """ \
|
Warning: failed to fetch meta data for '%s' package '%s' (new package?) """ \
|
||||||
@ -1287,7 +1314,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
|
|||||||
if not opts.nodevelproject:
|
if not opts.nodevelproject:
|
||||||
devloc = None
|
devloc = None
|
||||||
try:
|
try:
|
||||||
devloc = show_develproject(apiurl, dst_project, dst_package)
|
devloc, _ = show_devel_project(apiurl, dst_project, dst_package)
|
||||||
except HTTPError:
|
except HTTPError:
|
||||||
print("""\
|
print("""\
|
||||||
Warning: failed to fetch meta data for '%s' package '%s' (new package?) """ \
|
Warning: failed to fetch meta data for '%s' package '%s' (new package?) """ \
|
||||||
|
28
osc/core.py
28
osc/core.py
@ -3146,14 +3146,30 @@ def show_attribute_meta(apiurl, prj, pac, subpac, attribute, with_defaults, with
|
|||||||
raise
|
raise
|
||||||
|
|
||||||
|
|
||||||
def show_develproject(apiurl, prj, pac, xml_node=False):
|
def show_devel_project(apiurl, prj, pac):
|
||||||
m = show_package_meta(apiurl, prj, pac)
|
m = show_package_meta(apiurl, prj, pac)
|
||||||
node = ET.fromstring(''.join(m)).find('devel')
|
node = ET.fromstring(''.join(m)).find('devel')
|
||||||
if not node is None:
|
if node is None:
|
||||||
if xml_node:
|
return None, None
|
||||||
return node
|
else:
|
||||||
return node.get('project')
|
return node.get('project'), node.get('package', None)
|
||||||
return None
|
|
||||||
|
|
||||||
|
def set_devel_project(apiurl, prj, pac, devprj, devpac=None):
|
||||||
|
meta = show_package_meta(apiurl, prj, pac)
|
||||||
|
root = ET.fromstring(''.join(meta))
|
||||||
|
node = root.find('devel')
|
||||||
|
if node is None:
|
||||||
|
node = ET.Element('devel')
|
||||||
|
root.append(node)
|
||||||
|
else:
|
||||||
|
node.clear()
|
||||||
|
node.set('project', devprj)
|
||||||
|
if devpac:
|
||||||
|
node.set('package', devpac)
|
||||||
|
url = makeurl(apiurl, ['source', prj, pac, '_meta'])
|
||||||
|
mf = metafile(url, ET.tostring(root, encoding=ET_ENCODING))
|
||||||
|
mf.sync()
|
||||||
|
|
||||||
|
|
||||||
def show_package_disabled_repos(apiurl, prj, pac):
|
def show_package_disabled_repos(apiurl, prj, pac):
|
||||||
|
Loading…
Reference in New Issue
Block a user