diff options
author | TW <tw@waldmann-edv.de> | 2017-10-27 11:34:29 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-27 11:34:29 +0200 |
commit | c0b905875953a3819cb8b1454d3985608dff1934 (patch) | |
tree | d37970b4db0c0589776cc32ed83ade1b6387c523 | |
parent | 5b1a170ec22650c1b83b36d3b814025cce4e9f06 (diff) | |
parent | a3f1e6e2503b7ad658aa53af9c2c0e82a0138b1c (diff) |
Merge pull request #3217 from narendravardi/add_borg_config_dir
add BORG_CONFIG_DIR env, fixes #3083
-rw-r--r-- | src/borg/helpers/fs.py | 16 | ||||
-rw-r--r-- | src/borg/testsuite/helpers.py | 13 |
2 files changed, 24 insertions, 5 deletions
diff --git a/src/borg/helpers/fs.py b/src/borg/helpers/fs.py index 465c4c110..eab9714d5 100644 --- a/src/borg/helpers/fs.py +++ b/src/borg/helpers/fs.py @@ -29,8 +29,7 @@ def get_home_dir(): def get_keys_dir(): """Determine where to repository keys and cache""" - xdg_config = os.environ.get('XDG_CONFIG_HOME', os.path.join(get_home_dir(), '.config')) - keys_dir = os.environ.get('BORG_KEYS_DIR', os.path.join(xdg_config, 'borg', 'keys')) + keys_dir = os.environ.get('BORG_KEYS_DIR', os.path.join(get_config_dir(), 'keys')) if not os.path.exists(keys_dir): os.makedirs(keys_dir) os.chmod(keys_dir, stat.S_IRWXU) @@ -39,8 +38,7 @@ def get_keys_dir(): def get_security_dir(repository_id=None): """Determine where to store local security information.""" - xdg_config = os.environ.get('XDG_CONFIG_HOME', os.path.join(get_home_dir(), '.config')) - security_dir = os.environ.get('BORG_SECURITY_DIR', os.path.join(xdg_config, 'borg', 'security')) + security_dir = os.environ.get('BORG_SECURITY_DIR', os.path.join(get_config_dir(), 'security')) if repository_id: security_dir = os.path.join(security_dir, repository_id) if not os.path.exists(security_dir): @@ -66,6 +64,16 @@ def get_cache_dir(): return cache_dir +def get_config_dir(): + """Determine where to store whole config""" + xdg_config = os.environ.get('XDG_CONFIG_HOME', os.path.join(get_home_dir(), '.config')) + config_dir = os.environ.get('BORG_CONFIG_DIR', os.path.join(xdg_config, 'borg')) + if not os.path.exists(config_dir): + os.makedirs(config_dir) + os.chmod(config_dir, stat.S_IRWXU) + return config_dir + + def dir_is_cachedir(path): """Determines whether the specified path is a cache directory (and therefore should potentially be excluded from the backup) according to diff --git a/src/borg/testsuite/helpers.py b/src/borg/testsuite/helpers.py index 2a4160d2c..15c029f5c 100644 --- a/src/borg/testsuite/helpers.py +++ b/src/borg/testsuite/helpers.py @@ -18,7 +18,7 @@ from ..helpers import Buffer from ..helpers import partial_format, format_file_size, parse_file_size, format_timedelta, format_line, PlaceholderError, replace_placeholders from ..helpers import make_path_safe, clean_lines from ..helpers import interval, prune_within, prune_split -from ..helpers import get_cache_dir, get_keys_dir, get_security_dir +from ..helpers import get_cache_dir, get_keys_dir, get_security_dir, get_config_dir from ..helpers import is_slow_msgpack from ..helpers import yes, TRUISH, FALSISH, DEFAULTISH from ..helpers import StableDict, int_to_bigint, bigint_to_int, bin_to_hex @@ -447,6 +447,17 @@ class TestParseTimestamp(BaseTestCase): self.assert_equal(parse_timestamp('2015-04-19T20:25:00'), datetime(2015, 4, 19, 20, 25, 0, 0, timezone.utc)) +def test_get_config_dir(monkeypatch): + """test that get_config_dir respects environment""" + monkeypatch.delenv('BORG_CONFIG_DIR', raising=False) + monkeypatch.delenv('XDG_CONFIG_HOME', raising=False) + assert get_config_dir() == os.path.join(os.path.expanduser('~'), '.config', 'borg') + monkeypatch.setenv('XDG_CONFIG_HOME', '/var/tmp/.config') + assert get_config_dir() == os.path.join('/var/tmp/.config', 'borg') + monkeypatch.setenv('BORG_CONFIG_DIR', '/var/tmp') + assert get_config_dir() == '/var/tmp' + + def test_get_cache_dir(monkeypatch): """test that get_cache_dir respects environment""" monkeypatch.delenv('BORG_CACHE_DIR', raising=False) |