1# 2# Scons variable importer 3# 4# Version 1.1 5# 16-Aug-2019 6# 7import os 8 9def _setvariable(env,name,value): 10 """Sets SCons variable. 11 12 Sets Scons variable name in environment env to value 13 14 """ 15 kw={} 16 kw[name]=value 17 env.Replace(**kw) 18 19def _setenvvariable(env,name,value): 20 """Sets SCons environment variable. 21 22 Sets Scons environment variable name in environment env to value. 23 This variable will be used as environment variable for 24 external jobs started by SCons. 25 26 """ 27 env['ENV'][name]=value 28 29def importVariable(env,varlist=None,target=None,prefix=None): 30 """Imports variables from OS to SCons environment. 31 32 Imports environment variables from Operation System into SCons 33 variable. 34 35 keyword arguments: 36 env -- SCons environment to be imported into 37 varlist -- list or environment variable name to be imported 38 target -- output variable names (optional) 39 prefix -- import all variables starting with this prefix 40 41 """ 42 _importcore(env,varlist,target,prefix,_setvariable) 43 44def importEnvironment(env,varlist=None,target=None,prefix=None): 45 """Imports variables from OS to SCons environment. 46 47 Imports environment variables from Operation System into SCons 48 variable. 49 50 keyword arguments: 51 env -- SCons environment to be imported into 52 varlist -- list or environment variable name to be imported 53 target -- output variable names (optional) 54 prefix -- import all variables starting with this prefix 55 56 """ 57 _importcore(env,varlist,target,prefix,_setenvvariable) 58 59def _importcore(env,varlist,targets,prefix,setter): 60 """Imports env. variables from OS using setter. 61 62 keyword arguments: 63 env -- SCons environment to be imported into 64 varlist -- list or environment variable name to be imported 65 targets -- target variable names if you want to import variable 66 using different name 67 prefix -- import all variables starting with this prefix 68 setter -- function for setting variable in env 69 70 """ 71 if varlist: 72 if not isinstance(varlist, list): 73 if isinstance(varlist, str): 74 varlist=[varlist] 75 else: 76 raise TypeError("varlist must be list or string") 77 if targets: 78 if not isinstance(targets, list): 79 if isinstance(targets, str): 80 targets=[targets] 81 else: 82 raise TypeError("targets must be list of string") 83 for i in range(0,len(varlist)): 84 value=os.environ.get(varlist[i]) 85 if value: 86 if targets: 87 setter(*[env,targets[i],value]) 88 else: 89 setter(*[env,varlist[i],value]) 90 if prefix: 91 if not isinstance(prefix, str): 92 raise TypeError("prefix must be string") 93 for i in os.environ.keys(): 94 if i.startswith(prefix): 95 setter(*[env,i,os.environ.get(i)]) 96