|
@@ -762,9 +762,12 @@ def GetSettingsPath():
|
|
|
|
|
|
return os.path.join(os.getenv('HOME'), '.grass%d' % version)
|
|
return os.path.join(os.getenv('HOME'), '.grass%d' % version)
|
|
|
|
|
|
-def StoreEnvVariable(key, value, envFile = None):
|
|
|
|
|
|
+def StoreEnvVariable(key, value = None, envFile = None):
|
|
"""!Store environmental variable
|
|
"""!Store environmental variable
|
|
|
|
|
|
|
|
+ If value is not given (is None) then environmental variable is
|
|
|
|
+ unset.
|
|
|
|
+
|
|
@param key env key
|
|
@param key env key
|
|
@param value env value
|
|
@param value env value
|
|
@param envFile path to the environmental file (None for default location)
|
|
@param envFile path to the environmental file (None for default location)
|
|
@@ -779,32 +782,39 @@ def StoreEnvVariable(key, value, envFile = None):
|
|
|
|
|
|
# read env file
|
|
# read env file
|
|
environ = dict()
|
|
environ = dict()
|
|
|
|
+ lineSkipped = list()
|
|
if os.path.exists(envFile):
|
|
if os.path.exists(envFile):
|
|
try:
|
|
try:
|
|
fd = open(envFile)
|
|
fd = open(envFile)
|
|
except IOError, e:
|
|
except IOError, e:
|
|
- sys.stderr.write(_("Unable to open file '%s'") % envFile)
|
|
|
|
|
|
+ sys.stderr.write(_("Unable to open file '%s'\n") % envFile)
|
|
return
|
|
return
|
|
for line in fd.readlines():
|
|
for line in fd.readlines():
|
|
|
|
+ line = line.rstrip(os.linesep)
|
|
try:
|
|
try:
|
|
- key, value = line.split(' ', 1).strip().split('=', 1)
|
|
|
|
- except:
|
|
|
|
- sys.stderr.write(_("%s: unable to parse '%s'") % (envFile, line))
|
|
|
|
|
|
+ k, v = map(lambda x: x.strip(), line.split(' ', 1)[1].split('=', 1))
|
|
|
|
+ except StandardError, e:
|
|
|
|
+ sys.stderr.write(_("%s: line skipped - unable to parse '%s'\n"
|
|
|
|
+ "Reason: %s\n") % (envFile, line, e))
|
|
|
|
+ lineSkipped.append(line)
|
|
continue
|
|
continue
|
|
- if key in environ:
|
|
|
|
- sys.stderr.write(_("Duplicated key: %s") % key)
|
|
|
|
- environ[key] = value
|
|
|
|
|
|
+ if k in environ:
|
|
|
|
+ sys.stderr.write(_("Duplicated key: %s\n") % k)
|
|
|
|
+ environ[k] = v
|
|
|
|
|
|
fd.close()
|
|
fd.close()
|
|
|
|
|
|
# update environmental variables
|
|
# update environmental variables
|
|
- environ[key] = value
|
|
|
|
|
|
+ if value is None and key in environ:
|
|
|
|
+ del environ[key]
|
|
|
|
+ else:
|
|
|
|
+ environ[key] = value
|
|
|
|
|
|
# write update env file
|
|
# write update env file
|
|
try:
|
|
try:
|
|
fd = open(envFile, 'w')
|
|
fd = open(envFile, 'w')
|
|
except IOError, e:
|
|
except IOError, e:
|
|
- sys.stderr.write(_("Unable to create file '%s'") % envFile)
|
|
|
|
|
|
+ sys.stderr.write(_("Unable to create file '%s'\n") % envFile)
|
|
return
|
|
return
|
|
if windows:
|
|
if windows:
|
|
expCmd = 'set'
|
|
expCmd = 'set'
|
|
@@ -813,7 +823,11 @@ def StoreEnvVariable(key, value, envFile = None):
|
|
|
|
|
|
for key, value in environ.iteritems():
|
|
for key, value in environ.iteritems():
|
|
fd.write('%s %s=%s\n' % (expCmd, key, value))
|
|
fd.write('%s %s=%s\n' % (expCmd, key, value))
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+ # write also skipped lines
|
|
|
|
+ for line in lineSkipped:
|
|
|
|
+ fd.write(line + os.linesep)
|
|
|
|
+
|
|
fd.close()
|
|
fd.close()
|
|
|
|
|
|
def SetAddOnPath(addonPath = None, key = 'PATH'):
|
|
def SetAddOnPath(addonPath = None, key = 'PATH'):
|
|
@@ -834,7 +848,7 @@ def SetAddOnPath(addonPath = None, key = 'PATH'):
|
|
'GRASS%s' % gVersion,
|
|
'GRASS%s' % gVersion,
|
|
'addons'))
|
|
'addons'))
|
|
|
|
|
|
- StoreEnvVariable('GRASS_ADDON_' + key, addonPath)
|
|
|
|
|
|
+ StoreEnvVariable(key = 'GRASS_ADDON_' + key, value = addonPath)
|
|
os.environ['GRASS_ADDON_' + key] = addonPath
|
|
os.environ['GRASS_ADDON_' + key] = addonPath
|
|
|
|
|
|
# From lib/gis/col_str.c, except purple which is mentioned
|
|
# From lib/gis/col_str.c, except purple which is mentioned
|