l.append([value, override])
setVarFlag(base, v, l, d)
return
-
+
if not var in d:
initVar(var, d)
- d[var]["content"] = value
+ if getVarFlag(var, 'matchesenv', d):
+ delVarFlag(var, 'matchesenv', d)
+ setVarFlag(var, 'export', 1, d)
+ d[var]["content"] = value
def getVar(var, d = _data, exp = 0):
"""Gets the value of a variable
>>> delVarFlag('TEST', 'testflag')
>>> print getVarFlag('TEST', 'testflag')
None
-
+
"""
if var in d and "flags" in d[var] and flag in d[var]["flags"]:
del d[var]["flags"][flag]
def setVarFlags(var, flags, d = _data):
"""Set the flags for a given variable
-
+
Example:
>>> myflags = {}
>>> myflags['test'] = 'blah'
>>> delVarFlags('TEST')
>>> print getVarFlags('TEST')
None
-
+
"""
if var in d and "flags" in d[var]:
del d[var]["flags"]
def var_sub(match):
key = match.group()[2:-1]
#print "got key:", key
- var = getVar(key, d)
+ var = getVar(key, d, 1)
if var is not None:
return var
else:
if not s in non_inherit_vars:
try:
setVar(s, os.environ[s], d)
+ setVarFlag(s, 'matchesenv', '1', d)
except TypeError:
pass
debug(2, "Warning, %s variable is not a string, not emitting" % var)
return 0
+ if getVarFlag(var, 'matchesenv', d):
+ return 0
+
if var.find("-") != -1 or var.find(".") != -1 or var.find('{') != -1 or var.find('}') != -1 or var.find('+') != -1:
debug(2, "Warning, %s variable name contains an invalid char, not emitting to shell" % var)
return 0
if getVarFlag(var, "func", d):
# NOTE: should probably check for unbalanced {} within the var
o.write("%s() {\n%s\n}\n" % (var, val))
- else:
- if getVarFlag(var, "export", d):
- o.write('export ')
+ else:
+ if not getVarFlag(var, "export", d):
+ return 0
+
+ o.write('export ')
# if we're going to output this within doublequotes,
# to a shell, we need to escape the quotes in the var
alter = re.sub('"', '\\"', val.strip())
def emit_env(o=sys.__stdout__, d = _data):
"""Emits all items in the data store in a format such that it can be sourced by a shell."""
- expandData(d)
+# expandData(d)
env = d.keys()
for e in env:
>>> setVar('TEST_ramses', 'machine')
>>> setVar('TEST_local', 'local')
>>> setVar('OVERRIDES', 'arm')
-
+
>>> setVar('TEST', 'original')
>>> update_data()
>>> print getVar('TEST')
target
-
+
>>> setVar('OVERRIDES', 'arm:ramses:local')
>>> setVar('TEST', 'original')
>>> update_data()
break
sval+=a
setVar(s, sval, d)
-
+
# Handle line prepends
for (a, o) in getVarFlag(s, '_prepend', d) or []:
delVarFlag(s, '_prepend', d)