mirror of https://github.com/borgbackup/borg.git
add get_runtime_dir / BORG_RUNTIME_DIR, tests, docs
This commit is contained in:
parent
9f51600f20
commit
7878a34fd4
|
@ -150,6 +150,10 @@ Directories and files:
|
|||
`XDG env var`_ ``XDG_DATA_HOME`` is set, then ``$XDG_DATA_HOME/borg`` is being used instead.
|
||||
This directory contains all borg data directories, see the FAQ
|
||||
for a security advisory about the data in this directory: :ref:`home_data_borg`
|
||||
BORG_RUNTIME_DIR
|
||||
Defaults to ``$BORG_BASE_DIR/.cache/borg``. If ``BORG_BASE_DIR`` is not explicitly set while
|
||||
`XDG env var`_ ``XDG_RUNTIME_DIR`` is set, then ``$XDG_RUNTIME_DIR/borg`` is being used instead.
|
||||
This directory contains borg runtime files, like e.g. the socket file.
|
||||
BORG_SECURITY_DIR
|
||||
Defaults to ``$BORG_DATA_DIR/security``.
|
||||
This directory contains security relevant data.
|
||||
|
|
|
@ -11,7 +11,8 @@ from ..constants import * # NOQA
|
|||
from .checks import check_extension_modules, check_python
|
||||
from .datastruct import StableDict, Buffer, EfficientCollectionQueue
|
||||
from .errors import Error, ErrorWithTraceback, IntegrityError, DecompressionError
|
||||
from .fs import ensure_dir, get_security_dir, get_keys_dir, get_base_dir, join_base_dir, get_cache_dir, get_config_dir
|
||||
from .fs import ensure_dir, join_base_dir
|
||||
from .fs import get_security_dir, get_keys_dir, get_base_dir, get_cache_dir, get_config_dir, get_runtime_dir
|
||||
from .fs import dir_is_tagged, dir_is_cachedir, make_path_safe, scandir_inorder
|
||||
from .fs import secure_erase, safe_unlink, dash_open, os_open, os_stat, umount
|
||||
from .fs import O_, flags_root, flags_dir, flags_special_follow, flags_special, flags_base, flags_normal, flags_noatime
|
||||
|
|
|
@ -106,6 +106,18 @@ def get_data_dir(*, legacy=False):
|
|||
return data_dir
|
||||
|
||||
|
||||
def get_runtime_dir(*, legacy=False):
|
||||
"""Determine where to store runtime files, like sockets, PID files, ..."""
|
||||
assert legacy is False, "there is no legacy variant of the borg runtime dir"
|
||||
runtime_dir = os.environ.get(
|
||||
"BORG_RUNTIME_DIR", join_base_dir(".cache", "borg", legacy=legacy) or platformdirs.user_runtime_dir("borg")
|
||||
)
|
||||
|
||||
# Create path if it doesn't exist yet
|
||||
ensure_dir(runtime_dir)
|
||||
return runtime_dir
|
||||
|
||||
|
||||
def get_cache_dir(*, legacy=False):
|
||||
"""Determine where to repository keys and cache"""
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ from ..helpers import (
|
|||
)
|
||||
from ..helpers import make_path_safe, clean_lines
|
||||
from ..helpers import interval
|
||||
from ..helpers import get_base_dir, get_cache_dir, get_keys_dir, get_security_dir, get_config_dir
|
||||
from ..helpers import get_base_dir, get_cache_dir, get_keys_dir, get_security_dir, get_config_dir, get_runtime_dir
|
||||
from ..helpers import is_slow_msgpack
|
||||
from ..helpers import msgpack
|
||||
from ..helpers import yes, TRUISH, FALSISH, DEFAULTISH
|
||||
|
@ -752,6 +752,30 @@ def test_get_security_dir(monkeypatch):
|
|||
assert get_security_dir() == "/var/tmp"
|
||||
|
||||
|
||||
def test_get_runtime_dir(monkeypatch):
|
||||
"""test that get_runtime_dir respects environment"""
|
||||
monkeypatch.delenv("BORG_BASE_DIR", raising=False)
|
||||
home_dir = os.path.expanduser("~")
|
||||
if is_win32:
|
||||
monkeypatch.delenv("BORG_RUNTIME_DIR", raising=False)
|
||||
assert get_runtime_dir() == os.path.join(home_dir, "AppData", "Local", "Temp", "borg", "borg")
|
||||
monkeypatch.setenv("BORG_RUNTIME_DIR", home_dir)
|
||||
assert get_runtime_dir() == home_dir
|
||||
elif is_darwin:
|
||||
monkeypatch.delenv("BORG_RUNTIME_DIR", raising=False)
|
||||
assert get_runtime_dir() == os.path.join(home_dir, "Library", "Caches", "TemporaryItems", "borg")
|
||||
monkeypatch.setenv("BORG_RUNTIME_DIR", "/var/tmp")
|
||||
assert get_runtime_dir() == "/var/tmp"
|
||||
else:
|
||||
monkeypatch.delenv("XDG_RUNTIME_DIR", raising=False)
|
||||
monkeypatch.delenv("BORG_RUNTIME_DIR", raising=False)
|
||||
assert get_runtime_dir() == os.path.join("/run/user", str(os.getuid()), "borg")
|
||||
monkeypatch.setenv("XDG_RUNTIME_DIR", "/var/tmp/.cache")
|
||||
assert get_runtime_dir() == os.path.join("/var/tmp/.cache", "borg")
|
||||
monkeypatch.setenv("BORG_RUNTIME_DIR", "/var/tmp")
|
||||
assert get_runtime_dir() == "/var/tmp"
|
||||
|
||||
|
||||
def test_file_size():
|
||||
"""test the size formatting routines"""
|
||||
si_size_map = {
|
||||
|
|
Loading…
Reference in New Issue