Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 30 additions & 5 deletions src/cfengine_cli/paths.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
from cf_remote.paths import path_append


def cfengine_dir(subdir=None):
def cfengine_cache_dir(subdir=None):
"""
Returns the directory used by the Python tools for temporary files,
global config, downloads, etc.
Returns the directory used by the Python tools for temporary
files, downloads, etc.

Defaults to ~/.cfengine/, but can be overridden via the CFENGINE_DIR
Defaults to ~/.cache/cfengine/, but can be overridden via the CFENGINE_DIR
environment variable.
"""
override_dir = os.getenv("CFENGINE_DIR")
Expand All @@ -27,7 +27,32 @@ def cfengine_dir(subdir=None):

return path_append(override_dir, subdir)

return path_append("~/.cfengine/", subdir)
return path_append("~/.cache/cfengine/", subdir)


def cfengine_config_dir(subdir=None):
"""
Returns the directory used by the Python tools for config/persistent files.

Defaults to ~/.config/cfengine/, but can be overridden via the CFENGINE_DIR
environment variable.
"""
override_dir = os.getenv("CFENGINE_DIR")

if override_dir:
override_dir = os.path.normpath(override_dir)
parent = os.path.dirname(override_dir)

if not os.path.exists(parent):
raise UserError(
"'{}' doesn't exist. Make sure this path is correct and exists.".format(
parent
)
)

return path_append(override_dir, subdir)

return path_append("~/.config/cfengine/", subdir)


def bin(component: str) -> str:
Expand Down
25 changes: 19 additions & 6 deletions tests/unit/test_paths.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,28 @@
import os
from cfengine_cli.paths import cfengine_dir, bin

from cfengine_cli.paths import cfengine_config_dir, cfengine_cache_dir, bin

def test_cfengine_dir():
a = os.path.abspath(os.path.expanduser(cfengine_dir()))
b = os.path.abspath(os.path.expanduser("~/.cfengine"))

def test_cfengine_cache_dir():
a = os.path.abspath(os.path.expanduser(cfengine_cache_dir()))
b = os.path.abspath(os.path.expanduser("~/.cache/cfengine"))

assert a == b

a = os.path.abspath(os.path.expanduser(cfengine_cache_dir("subdir")))
b = os.path.abspath(os.path.expanduser("~/.cache/cfengine/subdir"))

assert a == b


def test_cfengine_conf_dir():
a = os.path.abspath(os.path.expanduser(cfengine_config_dir()))
b = os.path.abspath(os.path.expanduser("~/.config/cfengine"))

assert a == b

a = os.path.abspath(os.path.expanduser(cfengine_dir("subdir")))
b = os.path.abspath(os.path.expanduser("~/.cfengine/subdir"))
a = os.path.abspath(os.path.expanduser(cfengine_config_dir("subdir")))
b = os.path.abspath(os.path.expanduser("~/.config/cfengine/subdir"))

assert a == b

Expand Down
Loading