diff options
-rw-r--r-- | alot/defaults/alot.rc.spec | 6 | ||||
-rw-r--r-- | alot/settings/manager.py | 22 | ||||
-rw-r--r-- | docs/source/configuration/alotrc_table | 6 | ||||
-rw-r--r-- | tests/settings/manager_test.py | 11 |
4 files changed, 19 insertions, 26 deletions
diff --git a/alot/defaults/alot.rc.spec b/alot/defaults/alot.rc.spec index cfecb123..36b45124 100644 --- a/alot/defaults/alot.rc.spec +++ b/alot/defaults/alot.rc.spec @@ -31,12 +31,10 @@ tabwidth = integer(default=8) # templates directory that contains your message templates. # It will be used if you give `compose --template` a filename without a path prefix. -# The default path is `$XDG_CONFIG_HOME/alot/temmplates`. -template_dir = string(default=None) +template_dir = string(default='$XDG_CONFIG_HOME/alot/templates') # directory containing theme files. -# The default path is `$XDG_CONFIG_HOME/alot/themes`. -themes_dir = string(default=None) +themes_dir = string(default='$XDG_CONFIG_HOME/alot/themes') # name of the theme to use theme = string(default=None) diff --git a/alot/settings/manager.py b/alot/settings/manager.py index 6f1d01ca..150bd7d1 100644 --- a/alot/settings/manager.py +++ b/alot/settings/manager.py @@ -97,12 +97,12 @@ class SettingsManager(object): if isinstance(newbindings, Section): self._bindings.merge(newbindings) - tempdir = self._process_xdg_default('template_dir', 'alot/templates') + tempdir = self._process_xdg_default('template_dir') logging.debug('template directory: `{}`'.format(tempdir)) # themes themestring = newconfig['theme'] - themes_dir = self._process_xdg_default('themes_dir', 'alot/themes') + themes_dir = self._process_xdg_default('themes_dir') logging.debug('themes directory: `{}`'.format(themes_dir)) # if config contains theme string use that @@ -137,7 +137,7 @@ class SettingsManager(object): self._accounts = self._parse_accounts(self._config) self._accountmap = self._account_table(self._accounts) - def _process_xdg_default(self, setting_name, fallback): + def _process_xdg_default(self, setting_name): """ Processes setting that uses $XDG_CONFIG_HOME in the default value. @@ -147,20 +147,18 @@ class SettingsManager(object): :param setting_name: name of setting to be processed :type setting_name: str - :param fallback: fallback path relative to ~/.config if the setting - is not set by the user. - :type fallback: str :returns: path :rvalue: str """ path = self._config.get(setting_name) - if path: - path = os.path.expanduser(path) - else: - xdgdir = get_env('XDG_CONFIG_HOME', - os.path.expanduser('~/.config')) - path = os.path.join(xdgdir, fallback) + if path.startswith('$XDG_CONFIG_HOME'): + if os.environ.get('XDG_CONFIG_HOME', False): + xdg_expanded = os.environ['XDG_CONFIG_HOME'] + else: + xdg_expanded = '~/.config' + path = path.replace('$XDG_CONFIG_HOME', xdg_expanded) + path = os.path.expanduser(path) self._config[setting_name] = path return path diff --git a/docs/source/configuration/alotrc_table b/docs/source/configuration/alotrc_table index 0299d406..5806f7bd 100644 --- a/docs/source/configuration/alotrc_table +++ b/docs/source/configuration/alotrc_table @@ -576,10 +576,9 @@ templates directory that contains your message templates. It will be used if you give `compose --template` a filename without a path prefix. - The default path is `$XDG_CONFIG_HOME/alot/temmplates`. :type: string - :default: None + :default: "$XDG_CONFIG_HOME/alot/templates" .. _terminal-cmd: @@ -607,10 +606,9 @@ .. describe:: themes_dir directory containing theme files. - The default path is `$XDG_CONFIG_HOME/alot/themes`. :type: string - :default: None + :default: "$XDG_CONFIG_HOME/alot/themes" .. _thread-authors-me: diff --git a/tests/settings/manager_test.py b/tests/settings/manager_test.py index c056524b..06200c71 100644 --- a/tests/settings/manager_test.py +++ b/tests/settings/manager_test.py @@ -139,8 +139,7 @@ class TestSettingsManager(unittest.TestCase): class TestSettingsManagerProcessXDG(unittest.TestCase): """ Tests SettingsManager._process_xdg_default """ setting_name = 'template_dir' - def_relative = 'alot/templates' - default = os.path.join('$XDG_CONFIG_HOME', def_relative) + default = '$XDG_CONFIG_HOME/alot/templates' xdg_fallback = '~/.config' xdg_config_home = '/foo/bar/.config' default_expanded = default.replace('$XDG_CONFIG_HOME', xdg_fallback) @@ -150,7 +149,7 @@ class TestSettingsManagerProcessXDG(unittest.TestCase): if 'XDG_CONFIG_HOME' in os.environ: del os.environ['XDG_CONFIG_HOME'] manager = SettingsManager() - manager._process_xdg_default(self.setting_name, self.def_relative) + manager._process_xdg_default(self.setting_name) self.assertEqual(manager._config.get(self.setting_name), os.path.expanduser(self.default_expanded)) @@ -158,7 +157,7 @@ class TestSettingsManagerProcessXDG(unittest.TestCase): with mock.patch.dict('os.environ'): os.environ['XDG_CONFIG_HOME'] = '' manager = SettingsManager() - manager._process_xdg_default(self.setting_name, self.def_relative) + manager._process_xdg_default(self.setting_name) self.assertEqual(manager._config.get(self.setting_name), os.path.expanduser(self.default_expanded)) @@ -166,7 +165,7 @@ class TestSettingsManagerProcessXDG(unittest.TestCase): with mock.patch.dict('os.environ'): os.environ['XDG_CONFIG_HOME'] = self.xdg_config_home manager = SettingsManager() - manager._process_xdg_default(self.setting_name, self.def_relative) + manager._process_xdg_default(self.setting_name) actual = manager._config.get(self.setting_name) expected = self.default.replace('$XDG_CONFIG_HOME', self.xdg_config_home) @@ -182,7 +181,7 @@ class TestSettingsManagerProcessXDG(unittest.TestCase): self.addCleanup(os.unlink, f.name) manager = SettingsManager(alot_rc=f.name) - manager._process_xdg_default(self.setting_name, self.def_relative) + manager._process_xdg_default(self.setting_name) self.assertEqual(manager._config.get(self.setting_name), os.path.expanduser(user_setting)) |