Source code for issho.config

import toml
import paramiko
from pathlib import Path
from issho.helpers import absolute_path

ISSHO_DIR = Path.home().joinpath(".issho")
ISSHO_CONF_FILE = ISSHO_DIR.joinpath("conf.toml")
ISSHO_ENV_FILE = ISSHO_DIR.joinpath("envs.toml")


def _make_issho_conf_dir():
    if not ISSHO_DIR.exists():
        ISSHO_DIR.mkdir()
    if not ISSHO_CONF_FILE.exists():
        ISSHO_CONF_FILE.touch()
    if not ISSHO_ENV_FILE.exists():
        ISSHO_ENV_FILE.touch()
    return


[docs]def read_issho_conf(profile, filename=ISSHO_CONF_FILE): """ Writes issho variables out to a ``.toml`` file. :param profile: The name of the profile to read :param filename: The output filename :return: a dict of data stored with that profile in the configuration file """ _make_issho_conf_dir() conf = toml.load(filename) if profile not in conf: raise ValueError return conf[profile]
[docs]def read_issho_env(profile): """ Reads issho environment variables to a dict :param profile: the name of the issho environment to draw from :return: a dict of data with that profile stored in the environment file """ return read_issho_conf(profile, filename=ISSHO_ENV_FILE)
[docs]def write_issho_conf(new_conf_dict, filename=ISSHO_CONF_FILE): """ Updates the issho config file :param new_conf_dict: the new configuration to add :param filename: the location of the old configuration file """ _make_issho_conf_dir() old_issho_conf = toml.load(filename) new_conf = {**old_issho_conf, **new_conf_dict} toml.dump(new_conf, open(str(filename), "w")) return
[docs]def write_issho_env(new_env_dict): """ Save a new issho environment :param new_env_dict: the new set of environment paramters to add """ write_issho_conf(new_env_dict, filename=ISSHO_ENV_FILE)
[docs]def read_ssh_profile(ssh_config_path, profile): """ Helper method for getting data from .ssh/config """ ssh_config_file = absolute_path(ssh_config_path) conf = paramiko.SSHConfig() conf.parse(open(ssh_config_file)) return conf.lookup(profile)