Salome HOME
Add 'SALOME DEFAULT VALUES' section to the configuration file.
[modules/yacs.git] / bin / salomeContext.py
index 45b9b0f9ea4d44fbadc97b831b8526b3776b7e26..99fcd113a808e316156248a46c34af6750a1d8a6 100755 (executable)
@@ -1,5 +1,5 @@
 #! /usr/bin/env python3
-# Copyright (C) 2013-2019  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2013-2020  CEA/DEN, EDF R&D, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -183,6 +183,14 @@ class SalomeContext:
     os.environ[name] = value
   #
 
+  def setDefaultValue(self, name, value):
+    """ Set environment variable only if it is undefined."""
+    env = os.getenv(name, '')
+    if not env:
+      value = os.path.expandvars(value) # expand environment variables
+      self.getLogger().debug("Set environment variable: %s=%s", name, value)
+      os.environ[name] = value
+
   """Unset environment variable"""
   def unsetVariable(self, name):
     if os.environ.has_key(name):
@@ -287,7 +295,11 @@ class SalomeContext:
     if reserved is None:
       reserved = []
     try:
-      unsetVars, configVars, reservedDict = parseConfigFile(filename, reserved)
+      configInfo = parseConfigFile(filename, reserved)
+      unsetVars = configInfo.unsetVariables
+      configVars = configInfo.outputVariables
+      reservedDict = configInfo.reservedValues
+      defaultValues = configInfo.defaultValues
     except SalomeContextException as e:
       msg = "%s"%e
       self.getLogger().error(msg)
@@ -312,6 +324,10 @@ class SalomeContext:
       self.setVariable(key, val, overwrite=True)
       pass
 
+    for key,val in defaultValues:
+      self.setDefaultValue(key, val)
+      pass
+
     pythonpath = os.getenv('PYTHONPATH','').split(os.pathsep)
     pythonpath = [ os.path.realpath(x) for x in pythonpath ]
     sys.path[:0] = pythonpath