Source code for provit.home

"""
Helper functions for accessing data in the provit home directory
"""

import os
import yaml

from .config import get_config
from .prov import load_prov_files
from .agent import agent_factory

cfg = get_config()


[docs]def load_directories(): """ load the list of directories from the directories yaml file """ with open(cfg.directories_file) as d_file: data = yaml.safe_load(d_file) if not data: data = {} if not isinstance(data, dict): raise IOError("invalid directories.yaml") for directory in data: if not os.path.exists(directory): data[directory]["exists"] = False else: data[directory]["exists"] = True rv = [] for directory, content in data.items(): rv.append( { "directory": directory, "comment": content["comment"], "exists": content["exists"], } ) return rv
[docs]def remove_directories(directory): """ Remove directories from project directory list """ dirs = load_directories() dirs = [d for d in dirs if d["directory"] != directory["directory"]] _save_directories(dirs) return dirs
[docs]def add_directory(directory): """ Add directory to project directories list """ dirs = load_directories() # if directory already in current list do not add and return current list for d in dirs: if d["directory"] == directory["directory"]: return dirs dirs.append(directory) _save_directories(dirs) return dirs
def _save_directories(directories): """ save current state of porject directories list to yaml file """ data = {x["directory"]: {"comment": x["comment"].strip()} for x in directories} with open(cfg.directories_file, "w") as d_file: yaml.dump(data, d_file, default_flow_style=False)