first commit
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
"""
|
||||
Used to take care of the options that end in `_dir`. The assumption is that
|
||||
`_dir` options need to be treated differently. They need to verified to exist
|
||||
and they need to be rooted based on the user, root option etc.
|
||||
"""
|
||||
# Import python libs
|
||||
import os
|
||||
import pop.hub
|
||||
|
||||
|
||||
def roots(hub: "pop.hub.Hub", default_root, f_opts, root_dir):
|
||||
"""
|
||||
Detect the root dir data and apply it
|
||||
"""
|
||||
os_root = os.path.abspath(os.sep)
|
||||
root = os_root
|
||||
change = False
|
||||
non_priv = False
|
||||
if hasattr(os, "geteuid"):
|
||||
if not os.geteuid() == 0:
|
||||
change = True
|
||||
non_priv = True
|
||||
if root_dir and root_dir != default_root:
|
||||
root = root_dir
|
||||
change = True
|
||||
if not root.endswith(os.sep):
|
||||
root = f"{root}{os.sep}"
|
||||
if change:
|
||||
for imp in f_opts:
|
||||
for key in f_opts[imp]:
|
||||
if key == "root_dir":
|
||||
continue
|
||||
if key.endswith("_dir"):
|
||||
if non_priv:
|
||||
root = os.path.join(os.environ["HOME"], f".{imp}{os.sep}")
|
||||
if imp in f_opts[imp][key]:
|
||||
a_len = len(imp) + 1
|
||||
f_opts[imp][
|
||||
key
|
||||
] = f"{os_root}{f_opts[imp][key][f_opts[imp][key].index(imp)+a_len:]}"
|
||||
f_opts[imp][key] = f_opts[imp][key].replace(os_root, root, 1)
|
||||
|
||||
|
||||
def verify(hub: "pop.hub.Hub", opts):
|
||||
"""
|
||||
Verify that the environment and all named directories in the
|
||||
configuration exist
|
||||
"""
|
||||
for key in opts:
|
||||
if key == "root_dir":
|
||||
continue
|
||||
if key == "config_dir":
|
||||
continue
|
||||
if key.endswith("_dir"):
|
||||
if not os.path.isdir(opts[key]):
|
||||
os.makedirs(opts[key])
|
||||
Reference in New Issue
Block a user