Files
openbts/tools/translateConfig.py
2011-10-23 22:08:35 +00:00

80 lines
1.5 KiB
Python
Executable File

#!/usr/bin/python
import sys
if len(sys.argv)<2:
print sys.argv[0]," configFile"
sys.exit()
filename = sys.argv[1]
# This needs to match what is in Configuration.cpp.
header = " \
CREATE TABLE IF NOT EXISTS CONFIG ( \
KEYSTRING TEXT UNIQUE NOT NULL, \
VALUESTRING TEXT, \
STATIC INTEGER DEFAULT 0, \
OPTIONAL INTEGER DEFAULT 0, \
COMMENTS TEXT DEFAULT '' \
);"
inFile = open(filename,"r")
knownKeys = []
def processDirective(dirLine):
(directive,key) = dirLine.split(' ')
if directive=="static":
if key not in knownKeys:
print "non-existant key",key,"cannot be static"
sys.exit()
print "UPDATE CONFIG SET STATIC=1 WHERE KEYSTRING==\""+key+"\";"
return
if directive=="optional":
if key not in knownKeys:
print "INSERT INTO CONFIG (KEYSTRING,OPTIONAL) VALUES (\""+key+"\",1);"
return
print "UPDATE CONFIG SET OPTIONAL=1 WHERE KEYSTRING==\""+key+"\";"
return
print "unknown directive",directive
sys.exit()
print header
for line in inFile:
line = line[:-1].lstrip()
if len(line)==0:
continue
# process comments
if line[0]=='#':
print "--", line
continue
# process directive
if line[0]=='$':
processDirective(line[1:])
continue
# key-value pairs
keyval = line.split(' ',1)
key = keyval[0]
if key in knownKeys:
print "key",key,"not unique"
sys.exit()
if len(keyval)==1:
print "INSERT INTO CONFIG (KEYSTRING) VALUES (\""+key+"\");"
else:
value = keyval[1]
print "INSERT INTO CONFIG (KEYSTRING,VALUESTRING) VALUES (\""+key+"\",\""+value+"\");"
knownKeys.append(key)
inFile.close()