Browse Source

initial import

Andrej 4 years ago
commit
3e3b9a885d
3 changed files with 97 additions and 0 deletions
  1. 60 0
      parseConfig.py
  2. 26 0
      pythonScripts/convertValues.py
  3. 11 0
      template/testCfg.json

+ 60 - 0
parseConfig.py

@@ -0,0 +1,60 @@
+import json
+import re
+import sys
+import os
+
+#first pass
+def convert(fo):
+    
+    if not isinstance(fo,dict):
+        return fo
+
+    #convert core variables
+    if 'setVariables' in fo:
+        for v in fo['setVariables']:
+            if fo[v].find('__home__')>-1:
+                fo[v]=re.sub('__home__',os.path.expanduser('~'),fo[v])
+    #descend
+    for c in fo:
+        if c=='setVariables':
+            continue
+        if isinstance(fo[c],dict):
+            fo[c]=convert(fo[c])
+            continue
+        if isinstance(fo[c],list):
+            fo[c]=[convert(x) for x in fo[c]]
+            continue
+    return fo
+
+def convertValues(pars):
+    replacements={v:pars[v] for v in pars['setVariables']}
+    return convertValuesR(pars,replacements)
+
+def convertValuesR(pars,replacements):
+
+    #dict
+    if isinstance(pars,dict):
+        for c in pars:
+            if c=='setVariables':
+                continue
+            if c in replacements:
+                continue
+            if isinstance(pars[c],dict):
+                pars[c]=convertValuesR(pars[c],replacements)
+                continue
+            if isinstance(pars[c],list):
+                pars[c]=[convertValuesR(x,replacements) for x in pars[c]]
+                continue
+            for r in replacements:
+                pars[c]=re.sub(r,replacements[r],pars[c])
+        return pars
+
+    #list
+    if isinstance(pars,list):
+        return [convertValuesR(x,replacements) for x in pars]
+
+    #value/leaf
+    for r in replacements:
+        pars=re.sub(r,replacements[r],pars)
+    return pars
+

+ 26 - 0
pythonScripts/convertValues.py

@@ -0,0 +1,26 @@
+import json
+import re
+import sys
+import os
+
+def main(parameterFile):
+
+    fs=os.path.join(os.path.expanduser('~'),'.labkey','setup.json')
+    with open(fs,'r') as f:
+        setup=json.load(f)
+
+    sys.path.append(setup['paths']['parseConfig'])
+    import parseConfig
+
+    with open(parameterFile,'r') as f:
+        pars=json.load(f)
+
+    pars=parseConfig.convert(pars)
+    print(pars)
+    pars=parseConfig.convertValues(pars)
+    print(pars)
+    
+       
+
+if __name__=='__main__':
+    main(sys.argv[1])

+ 11 - 0
template/testCfg.json

@@ -0,0 +1,11 @@
+{"setVariables":["__temp__","__true__"],
+"__temp__":"__home__/temp",
+"__true__":"T",
+"A":{
+	"cfg":"__temp__/testCfg.json",
+	"t":"__true__"
+},
+"B":"__true__",
+"M":"MAIN",
+"T":"TRUE"
+}