blob: f6599756b194d60819366217b94707e138599e2c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#!/usr/bin/env python
import os
import sys
import glob
import lxml.etree
import Bcfg2.Options
def main():
opts = dict(repo=Bcfg2.Options.SERVER_REPOSITORY)
setup = Bcfg2.Options.OptionParser(opts)
setup.parse(sys.argv[1:])
files = []
for plugin in ['Pkgmgr']:
files.extend(glob.glob(os.path.join(setup['repo'], plugin, "*")))
for bfile in files:
bdata = lxml.etree.parse(bfile)
changed = False
if not bdata.xpath("//@type='sysv'"):
print("%s doesn't contain any sysv packages, skipping" % bfile)
continue
pkglist = bdata.getroot()
if pkglist.tag != "PackageList":
print("%s doesn't look like a PackageList, skipping" % bfile)
continue
for pkg in bdata.xpath("//Package"):
if "simplename" in pkg.attrib:
pkg.set("simplefile", pkg.get("simplename"))
del pkg.attrib["simplename"]
changed = True
# if we switched to simplefile, we also need to switch to uri
if changed and "url" in pkglist.attrib:
pkglist.set("uri", pkglist.get("url"))
del pkglist.attrib["url"]
if changed:
print("Writing %s" % bfile)
try:
open(bfile, "w").write(lxml.etree.tostring(bdata))
except IOError:
err = sys.exc_info()[1]
print("Could not write %s: %s" % (bfile, err))
if __name__ == '__main__':
sys.exit(main())
|