piker/piker/brokers/config.py

75 lines
2.0 KiB
Python
Raw Normal View History

2020-11-06 17:23:14 +00:00
# piker: trading gear for hackers
# Copyright (C) 2018-present Tyler Goodlet (in stewardship of piker0)
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
"""
Broker configuration mgmt.
"""
2019-02-26 00:29:54 +00:00
import os
import configparser
import toml
import click
from ..log import get_logger
log = get_logger('broker-config')
_config_dir = click.get_app_dir('piker')
_file_name = 'brokers.toml'
2019-02-26 00:29:54 +00:00
def _override_config_dir(
path: str
) -> None:
global _config_dir
_config_dir = path
def get_broker_conf_path():
return os.path.join(_config_dir, _file_name)
def load(
path: str = None
) -> (dict, str):
"""Load broker config.
"""
2019-02-26 00:29:54 +00:00
path = path or get_broker_conf_path()
config = toml.load(path)
log.debug(f"Read config file {path}")
return config, path
2019-02-26 00:29:54 +00:00
def write(
config: dict, # toml config as dict
2019-02-26 00:29:54 +00:00
path: str = None,
) -> None:
"""Write broker config to disk.
Create a ``brokers.ini`` file if one does not exist.
"""
2019-02-26 00:29:54 +00:00
path = path or get_broker_conf_path()
dirname = os.path.dirname(path)
if not os.path.isdir(dirname):
log.debug(f"Creating config dir {_config_dir}")
2019-02-26 00:29:54 +00:00
os.makedirs(dirname)
if not config:
raise ValueError(
"Watch out you're trying to write a blank config!")
2019-02-26 00:29:54 +00:00
log.debug(f"Writing config file {path}")
with open(path, 'w') as cf:
return toml.dump(config, cf)