Enable tilde and environment variable expansion on some items

Expand environment variables in the following configuration items:
- general.pythonfile;
- general.metadata;
- mbnames.filename;
- Repository.localfolders.
- Repository.sslcacertfile.

Make tilde and environment variable expansion in the following
configuration items:
- Repository.sslclientcert;
- Repository.sslclientkey.

GitHub pull request: https://github.com/OfflineIMAP/offlineimap/pull/113
Signed-off-by: Eygene Ryabinkin <rea@codelabs.ru>
This commit is contained in:
Eygene Ryabinkin
2014-11-02 11:49:26 +03:00
parent 8f3c22e227
commit e51ed80ecc
5 changed files with 44 additions and 6 deletions

View File

@ -94,7 +94,7 @@ class CustomConfigParser(SafeConfigParser):
return default
def getmetadatadir(self):
xforms = [os.path.expanduser]
xforms = [os.path.expanduser, os.path.expandvars]
d = self.getdefault("general", "metadata", "~/.offlineimap")
metadatadir = self.apply_xforms(d, xforms)
if not os.path.exists(metadatadir):
@ -102,7 +102,7 @@ class CustomConfigParser(SafeConfigParser):
return metadatadir
def getlocaleval(self):
xforms = [os.path.expanduser]
xforms = [os.path.expanduser, os.path.expandvars]
if self.has_option("general", "pythonfile"):
path = self.apply_xforms(self.get("general", "pythonfile"), xforms)
else:

View File

@ -49,12 +49,14 @@ def write():
def __genmbnames():
"""Takes a configparser object and a boxlist, which is a list of hashes
containing 'accountname' and 'foldername' keys."""
xforms = [os.path.expanduser, os.path.expandvars]
mblock.acquire()
try:
localeval = config.getlocaleval()
if not config.getdefaultboolean("mbnames", "enabled", 0):
return
file = open(os.path.expanduser(config.get("mbnames", "filename")), "wt")
path = config.apply_xform(config.get("mbnames", "filename"), xforms)
file = open(path, "wt")
file.write(localeval.eval(config.get("mbnames", "header")))
folderfilter = lambda accountname, foldername: 1
if config.has_option("mbnames", "folderfilter"):

View File

@ -194,14 +194,16 @@ class IMAPRepository(BaseRepository):
return self.getconfboolean('ssl', 0)
def getsslclientcert(self):
return self.getconf('sslclientcert', None)
xforms = [os.path.expanduser, os.path.expandvars, os.path.abspath]
return self.getconf_xform('sslclientcert', xforms, None)
def getsslclientkey(self):
return self.getconf('sslclientkey', None)
xforms = [os.path.expanduser, os.path.expandvars, os.path.abspath]
return self.getconf_xform('sslclientkey', xforms, None)
def getsslcacertfile(self):
"""Return the absolute path of the CA certfile to use, if any"""
xforms = [os.path.expanduser, os.path.abspath]
xforms = [os.path.expanduser, os.path.expandvars, os.path.abspath]
cacertfile = self.getconf_xform('sslcacertfile', xforms,
get_os_sslcertfile())
if cacertfile is None: