|
|
|
@ -24,14 +24,14 @@ class NamespaceIniFiller(CalculateIniParser):
|
|
|
|
|
self.errors = []
|
|
|
|
|
self.parse(data)
|
|
|
|
|
|
|
|
|
|
def startSection(self, sections):
|
|
|
|
|
def start_section(self, sections):
|
|
|
|
|
self.curns = self.ns
|
|
|
|
|
for section in sections:
|
|
|
|
|
if section not in self.curns.childs:
|
|
|
|
|
self.curns.addNamespace(Namespace(section))
|
|
|
|
|
self.curns = self.curns[section]
|
|
|
|
|
|
|
|
|
|
def clearSection(self, sections):
|
|
|
|
|
def clear_section(self, sections):
|
|
|
|
|
curns = self.ns
|
|
|
|
|
for section in sections:
|
|
|
|
|
if section not in curns.childs:
|
|
|
|
@ -39,47 +39,47 @@ class NamespaceIniFiller(CalculateIniParser):
|
|
|
|
|
curns = curns[section]
|
|
|
|
|
curns.clearChilds()
|
|
|
|
|
|
|
|
|
|
def changeValue(self, key, value):
|
|
|
|
|
def change_value(self, key, value):
|
|
|
|
|
self.curns[key].setValue(value)
|
|
|
|
|
|
|
|
|
|
def defineVariable(self, key, value):
|
|
|
|
|
def define_variable(self, key, value):
|
|
|
|
|
self.curns.addStringVariable(key, value)
|
|
|
|
|
|
|
|
|
|
def appendValue(self, key, value):
|
|
|
|
|
def append_value(self, key, value):
|
|
|
|
|
l = self.curns[key].getValue().split(",")
|
|
|
|
|
vlist = value.split(",")
|
|
|
|
|
for v in vlist:
|
|
|
|
|
if v not in l:
|
|
|
|
|
l.append(v)
|
|
|
|
|
self.changeValue(key, ",".join(l))
|
|
|
|
|
self.change_value(key, ",".join(l))
|
|
|
|
|
|
|
|
|
|
def removeValue(self, key, value):
|
|
|
|
|
def remove_value(self, key, value):
|
|
|
|
|
l = self.curns[key].getValue().split(",")
|
|
|
|
|
vlist = value.split(",")
|
|
|
|
|
for v in vlist:
|
|
|
|
|
if v in l:
|
|
|
|
|
l.remove(v)
|
|
|
|
|
self.changeValue(key, ",".join(l))
|
|
|
|
|
self.change_value(key, ",".join(l))
|
|
|
|
|
|
|
|
|
|
def defineKey(self, section, key, value, optype):
|
|
|
|
|
def define_key(self, section, key, value, optype):
|
|
|
|
|
Define = CalculateIniParser.Define
|
|
|
|
|
if optype == Define.Assign:
|
|
|
|
|
if optype == Define.assign:
|
|
|
|
|
if key not in self.curns:
|
|
|
|
|
self.defineVariable(key, value)
|
|
|
|
|
self.define_variable(key, value)
|
|
|
|
|
else:
|
|
|
|
|
self.changeValue(key, value)
|
|
|
|
|
elif optype == Define.Append:
|
|
|
|
|
self.change_value(key, value)
|
|
|
|
|
elif optype == Define.append:
|
|
|
|
|
if key not in self.curns:
|
|
|
|
|
self.defineVariable(key, value)
|
|
|
|
|
self.define_variable(key, value)
|
|
|
|
|
else:
|
|
|
|
|
self.appendValue(key, value)
|
|
|
|
|
elif optype == Define.Remove:
|
|
|
|
|
self.append_value(key, value)
|
|
|
|
|
elif optype == Define.remove:
|
|
|
|
|
if key not in self.curns:
|
|
|
|
|
self.defineVariable(key, value)
|
|
|
|
|
self.define_variable(key, value)
|
|
|
|
|
else:
|
|
|
|
|
self.removeValue(key, value)
|
|
|
|
|
self.remove_value(key, value)
|
|
|
|
|
|
|
|
|
|
def parseError(self, line, lineno, col):
|
|
|
|
|
def parse_error(self, line, lineno, col):
|
|
|
|
|
self.error(lineno, _("Syntax error: %s") % line)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -97,7 +97,7 @@ class NamespaceIniFillerStrict(NamespaceIniFiller):
|
|
|
|
|
ns.addNamespace(Namespace(newns))
|
|
|
|
|
super().fill(ns, data)
|
|
|
|
|
|
|
|
|
|
def startSection(self, sections):
|
|
|
|
|
def start_section(self, sections):
|
|
|
|
|
self.curns = self.ns
|
|
|
|
|
self.canCreate = sections[0] in self.availableSection
|
|
|
|
|
for section in sections:
|
|
|
|
@ -108,7 +108,7 @@ class NamespaceIniFillerStrict(NamespaceIniFiller):
|
|
|
|
|
self.curns = None
|
|
|
|
|
self.curns = self.curns[section]
|
|
|
|
|
|
|
|
|
|
#def clearSection(self, sections):
|
|
|
|
|
#def clear_section(self, sections):
|
|
|
|
|
# curns = self.ns
|
|
|
|
|
# self.canCreate = sections[0] in self.availableSection
|
|
|
|
|
# for section in sections:
|
|
|
|
@ -117,14 +117,14 @@ class NamespaceIniFillerStrict(NamespaceIniFiller):
|
|
|
|
|
# curns = curns[section]
|
|
|
|
|
# curns.clearChilds()
|
|
|
|
|
|
|
|
|
|
def defineVariable(self, key, value):
|
|
|
|
|
def define_variable(self, key, value):
|
|
|
|
|
if not self.canCreate:
|
|
|
|
|
pass
|
|
|
|
|
var = Variable(key)
|
|
|
|
|
var.addProperty(IniCreated(value))
|
|
|
|
|
self.curns.addVariable(var)
|
|
|
|
|
|
|
|
|
|
def changeValue(self, key, value):
|
|
|
|
|
def change_value(self, key, value):
|
|
|
|
|
var = self.curns[key]
|
|
|
|
|
var.setValue(value)
|
|
|
|
|
|
|
|
|
@ -146,7 +146,7 @@ class VariableLoader:
|
|
|
|
|
"""
|
|
|
|
|
reUpper = re.compile("(.)([A-Z])")
|
|
|
|
|
|
|
|
|
|
def _getVarlikeAttrs(self, obj):
|
|
|
|
|
def _get_varlike_attrs(self, obj):
|
|
|
|
|
"""
|
|
|
|
|
Получить список аттрибутов похожих на переменные
|
|
|
|
|
"""
|
|
|
|
@ -165,14 +165,14 @@ class VariableLoader:
|
|
|
|
|
self.fill(newns, fullfn, "%s.%s"%(package,fn))
|
|
|
|
|
elif fn.endswith(".py"):
|
|
|
|
|
module = self._load_module_source(package, fn, fullfn)
|
|
|
|
|
for varname, cls in self._getVarlikeAttrs(module):
|
|
|
|
|
for varname, cls in self._get_varlike_attrs(module):
|
|
|
|
|
if Variable.isImplementation(cls):
|
|
|
|
|
ns.addVariable(cls(varname))
|
|
|
|
|
elif HashVariable.isImplementation(cls) or \
|
|
|
|
|
TableVariable.isImplementation(cls) or \
|
|
|
|
|
Namespace.isImplementation(cls):
|
|
|
|
|
_newns = ns.addNamespace(cls(varname,ns))
|
|
|
|
|
for _varname, _cls in self._getVarlikeAttrs(cls):
|
|
|
|
|
for _varname, _cls in self._get_varlike_attrs(cls):
|
|
|
|
|
if Variable.isImplementation(_cls):
|
|
|
|
|
_newns.addVariable(_cls(_varname))
|
|
|
|
|
|
|
|
|
@ -205,7 +205,7 @@ class ProfileFiller:
|
|
|
|
|
Заполнитель значений переменных из файлов calculate.ini в профилях
|
|
|
|
|
"""
|
|
|
|
|
basename = "calculate.ini"
|
|
|
|
|
def getRepositoryMap(self, ns):
|
|
|
|
|
def get_repository_map(self, ns):
|
|
|
|
|
return {
|
|
|
|
|
x.name.getValue(): x.path.getValue()
|
|
|
|
|
for x in ns.os.gentoo.repositories
|
|
|
|
@ -213,6 +213,6 @@ class ProfileFiller:
|
|
|
|
|
|
|
|
|
|
def fill(self, ns, profile_path):
|
|
|
|
|
nif = NamespaceIniFillerStrict()
|
|
|
|
|
pw = ProfileWalker(self.basename, self.getRepositoryMap(ns))
|
|
|
|
|
pw = ProfileWalker(self.basename, self.get_repository_map(ns))
|
|
|
|
|
for fn in pw.find(profile_path):
|
|
|
|
|
nif.fill(ns, readFile(fn))
|
|
|
|
|