2013-02-17 20:03:46 +08:00
|
|
|
#!/usr/bin/python
|
|
|
|
|
2014-06-01 22:44:52 +08:00
|
|
|
import os, sys, re
|
2013-02-17 20:03:46 +08:00
|
|
|
|
2014-06-01 22:44:52 +08:00
|
|
|
import sgprops
|
2013-02-17 20:03:46 +08:00
|
|
|
|
2014-06-01 22:44:52 +08:00
|
|
|
fgRoot = sys.argv[1]
|
|
|
|
aircraftDir = os.path.join(fgRoot, 'Aircraft')
|
2013-02-17 20:03:46 +08:00
|
|
|
|
2014-06-01 22:44:52 +08:00
|
|
|
catalogProps = sgprops.Node()
|
|
|
|
catalogProps.addChild('version').value = '3.1.0'
|
|
|
|
catalogProps.addChild('id').value = 'org.flightgear.default'
|
|
|
|
catalogProps.addChild('license').value = 'GPL'
|
|
|
|
catalogProps.addChild('url').value = "http://fgfs.goneabitbursar.com/pkg/3.1.0/default-catalog.xml"
|
2013-02-19 17:40:08 +08:00
|
|
|
|
2014-06-01 22:44:52 +08:00
|
|
|
catalogProps.addChild('description').value = "Aircraft developed and maintained by the FlightGear project"
|
2013-02-19 17:40:08 +08:00
|
|
|
|
2014-06-01 22:44:52 +08:00
|
|
|
de = catalogProps.addChild('de')
|
|
|
|
# de.addChild('description').value = "<German translation of catalog description>"
|
2013-02-19 17:40:08 +08:00
|
|
|
|
2014-06-01 22:44:52 +08:00
|
|
|
fr = catalogProps.addChild('fr')
|
2013-02-17 20:03:46 +08:00
|
|
|
|
2014-06-01 22:44:52 +08:00
|
|
|
urls = [
|
|
|
|
"http://flightgear.wo0t.de/Aircraft-3.0/{acft}_20140116.zip",
|
|
|
|
"http://ftp.icm.edu.pl/packages/flightgear/Aircraft-3.0/{acft}_20140216.zip",
|
|
|
|
"http://mirrors.ibiblio.org/pub/mirrors/flightgear/ftp/Aircraft-3.0/{acft}_20140216.zip",
|
|
|
|
"http://ftp.igh.cnrs.fr/pub/flightgear/ftp/Aircraft-3.0/{acft}_20140116.zip",
|
|
|
|
"http://ftp.linux.kiev.ua/pub/fgfs/Aircraft-3.0/{acft}_20140116.zip",
|
|
|
|
"http://fgfs.physra.net/ftp/Aircraft-3.0/{acft}_20130225.zip"
|
|
|
|
]
|
2013-02-19 17:40:08 +08:00
|
|
|
|
2014-06-01 22:44:52 +08:00
|
|
|
thumbs = [
|
|
|
|
"http://www.flightgear.org/thumbs/v3.0/{acft}.jpg"
|
|
|
|
]
|
2013-02-20 23:29:02 +08:00
|
|
|
|
2014-06-01 22:44:52 +08:00
|
|
|
for d in os.listdir(aircraftDir):
|
|
|
|
acftDirPath = os.path.join(aircraftDir, d)
|
|
|
|
if not os.path.isdir(acftDirPath):
|
|
|
|
continue
|
2013-02-17 20:03:46 +08:00
|
|
|
|
2014-06-01 22:44:52 +08:00
|
|
|
setFilePath = None
|
|
|
|
|
|
|
|
# find the first set file
|
|
|
|
# FIXME - way to designate the primary file
|
|
|
|
for f in os.listdir(acftDirPath):
|
|
|
|
if f.endswith("-set.xml"):
|
|
|
|
setFilePath = os.path.join(acftDirPath, f)
|
|
|
|
break
|
2013-02-17 20:03:46 +08:00
|
|
|
|
2014-06-01 22:44:52 +08:00
|
|
|
if setFilePath is None:
|
|
|
|
print "No -set.xml file found in",acftDirPath,"will be skipped"
|
|
|
|
continue
|
2013-02-19 17:40:08 +08:00
|
|
|
|
2014-06-01 22:44:52 +08:00
|
|
|
try:
|
|
|
|
props = sgprops.readProps(setFilePath, dataDirPath = fgRoot)
|
|
|
|
sim = props.getNode("sim")
|
|
|
|
|
|
|
|
pkgNode = catalogProps.addChild('package')
|
|
|
|
pkgNode.addChild('id').value = d
|
|
|
|
pkgNode.addChild('name').value = sim.getValue('description')
|
2013-02-20 23:29:02 +08:00
|
|
|
|
2014-06-01 22:44:52 +08:00
|
|
|
longDesc = sim.getValue('long-description')
|
|
|
|
if longDesc is not None:
|
|
|
|
pkgNode.addChild('description').value = longDesc
|
2013-02-20 23:29:02 +08:00
|
|
|
|
2014-06-01 22:44:52 +08:00
|
|
|
# copy tags
|
|
|
|
if sim.hasChild('tags'):
|
|
|
|
for c in sim.getChild('tags').getChildren('tag'):
|
|
|
|
pkgNode.addChild('tag').value = c.value
|
|
|
|
|
|
|
|
# create download and thumbnail URLs
|
|
|
|
for u in urls:
|
|
|
|
pkgNode.addChild("url").value = u.format(acft=d)
|
|
|
|
|
|
|
|
for t in thumbs:
|
|
|
|
pkgNode.addChild("thumbnail").value = t.format(acft=d)
|
|
|
|
|
|
|
|
except:
|
|
|
|
print "Failure processing:", setFilePath
|
2013-02-19 17:40:08 +08:00
|
|
|
|
2013-02-17 20:03:46 +08:00
|
|
|
|
2014-06-01 22:44:52 +08:00
|
|
|
catalogProps.write("catalog.xml")
|