Respect XDG_CONFIG_HOME env variable - toot - Unnamed repository; edit this fil… | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit 455e531194a896490905a4e78c3a3dff10eb300b | |
parent 536328f56b3050e966ff44f3127e8270cad61dd6 | |
Author: Ivan Habunek <[email protected]> | |
Date: Sun, 14 Jan 2018 15:28:05 +0100 | |
Respect XDG_CONFIG_HOME env variable | |
to locate configuration home directory. | |
fixes #12 | |
Diffstat: | |
CHANGELOG.md | 6 ++++++ | |
tests/test_config.py | 17 +++++++++++++++++ | |
toot/config.py | 14 ++++++++++---- | |
3 files changed, 33 insertions(+), 4 deletions(-) | |
--- | |
diff --git a/CHANGELOG.md b/CHANGELOG.md | |
@@ -1,6 +1,12 @@ | |
Changelog | |
--------- | |
+**0.17.0 (TBA)** | |
+ | |
+* Changed configuration file format to allow switching between multiple logged | |
+ in accounts (#32) | |
+* Respect XDG_CONFIG_HOME environment variable to locate config home (#12) | |
+ | |
**0.16.2 (2018-01-02)** | |
* No changes, pushed to fix a packaging issue | |
diff --git a/tests/test_config.py b/tests/test_config.py | |
@@ -1,3 +1,4 @@ | |
+import os | |
import pytest | |
from toot import User, App, config | |
@@ -119,3 +120,19 @@ def test_delete_app(sample_config): | |
config.delete_app.__wrapped__(sample_config, app) | |
assert 'foo.social' not in sample_config['apps'] | |
assert len(sample_config['apps']) == app_count - 1 | |
+ | |
+ | |
+def test_get_config_file_path(): | |
+ fn = config.get_config_file_path | |
+ | |
+ os.unsetenv('XDG_CONFIG_HOME') | |
+ | |
+ assert fn() == os.path.expanduser('~/.config/toot/config.json') | |
+ | |
+ os.environ['XDG_CONFIG_HOME'] = '/foo/bar/config' | |
+ | |
+ assert fn() == '/foo/bar/config/toot/config.json' | |
+ | |
+ os.environ['XDG_CONFIG_HOME'] = '~/foo/config' | |
+ | |
+ assert fn() == os.path.expanduser('~/foo/config/toot/config.json') | |
diff --git a/toot/config.py b/toot/config.py | |
@@ -11,12 +11,18 @@ from toot.exceptions import ConsoleError | |
from toot.output import print_out | |
-# The file holding toot configuration | |
-CONFIG_FILE = os.environ['HOME'] + '/.config/toot/config.json' | |
+def get_config_file_path(): | |
+ """Returns the path to toot config file | |
+ | |
+ Attempts to locate config home dir from XDG_CONFIG_HOME env variable. | |
+ See: https://specifications.freedesktop.org/basedir-spec/basedir-spec-late… | |
+ If not found, defaults to `~/.config`. | |
+ """ | |
+ config_dir = os.getenv('XDG_CONFIG_HOME', '~/.config') | |
+ return os.path.expanduser(config_dir + '/toot/config.json') | |
-def get_config_file_path(): | |
- return CONFIG_FILE | |
+CONFIG_FILE = get_config_file_path() | |
def user_id(user): |