Source code for plugins.common.kconfig
from __future__ import with_statement
import re
[docs]class Kconfig :
"""Handle get/set on configuration file of kconfig system"""
def __init__ (self, conf_file, prefix) :
self._prefix = prefix
self._conf_file = conf_file
[docs] def get_selected_parameters (self) :
parameters = []
with open (self._conf_file) as file :
for line in file :
if re.match (self._prefix, line.lstrip()) :
# Remove prefix and assignment
parameters.append (line.lstrip().split(self._prefix, 1)[1].split ('=', 1)[0].rstrip())
return parameters
# TO REVIEW
[docs] def set_parameter(self,param,val):
try:
print "Opening file :",self.conf_file,"..."
f = open(self.conf_file,"rw")
lines = f.readlines()
except:
print "File :",self.conf_file,"can't be opened"
exit(-1)
found = False
for l in lines:
old_line_tmp = str(l)
l = l.replace((self.prefix+"_"),"").replace(" ","").replace("\n","").replace("isnotset","").split("=")
l = l[0]
if l.find(param)>=0 :
l = l.replace("#","")
tmp = l.split(param)
if tmp[1] == "":
found = True
old_line = old_line_tmp.replace("\n","")
if val=="y":
new_line = self.prefix+"_"+l+"="+val
elif val=="null":
new_line = "# "+self.prefix+"_"+l+" is not set"
else:
new_line = self.prefix+"_"+l+"="+"\""+val+"\""
if found==False:
print "The parameter :",param,"does not exist."
else:
command = "sed -i \'s,"+old_line+","+new_line+",g\' "+self.conf_file
print "old line =",old_line
print "new line =",new_line
print command
os.system(command)
[docs] def get_parameter(self,param):
try:
print "Opening file :",self._conf_file,"..."
f = open(self._conf_file,"r")
lines = f.readlines()
except:
print "File :",self._conf_file,"can't be opened"
exit(-1)
OUT = "no out"
found = False
for l in lines:
l = l.replace((self._prefix+"_"),"").replace(" ","").replace("\n","").replace("isnotset","").split("=")
if len(l) > 1:
val = l[1]
l = l[0]
if l.find(param)>=0 :
tmp = l.split(param)
if tmp[1] == "":
found = True
if tmp[0] == "#":
OUT = "The parameter : "+param+" is not set"
elif tmp[0] == "":
OUT = "The parameter : "+param+" is set to "+val
if found==False:
OUT = "The parameter : "+param+" does not exist."
return OUT
[docs] def is_selected(self, param) :
"""
Check if param is set in Config File
"""
varName = self._prefix + param + '='
try:
for line in open(self._conf_file) :
if varName in line:
# Parse line like : varName=y
# Handle case like varNameXXX
if (line.split(varName)[-1] == 'y\n') :
return True
else :
return False
return False
except:
return False