aboutsummaryrefslogtreecommitdiff
path: root/configstore.py
blob: fcaa5c89c8a5f00dd14cd8b14d6f455363a92756 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import os, re
from configparser import ConfigParser

CONFIG_DIR = os.environ['HOME'] + '/.config/inverter-bot'
CONFIG_FILE = 'config.ini'

__config__ = None


def _get_config_path() -> str:
    return "%s/%s" % (CONFIG_DIR, CONFIG_FILE)


def get_config():
    global __config__
    if __config__ is not None:
        return __config__['root']

    if not os.path.exists(CONFIG_DIR):
        raise IOError("%s directory not found" % CONFIG_DIR)

    if not os.path.isdir(CONFIG_DIR):
        raise IOError("%s is not a directory" % CONFIG_DIR)

    config_path = _get_config_path()
    if not os.path.isfile(config_path):
        raise IOError("%s file not found" % config_path)

    __config__ = ConfigParser()
    with open(config_path) as config_content:
        __config__.read_string("[root]\n" + config_content.read())

    return __config__['root']


def get_token() -> str:
    return get_config()['token']


def get_admins() -> tuple:
    config = get_config()
    return tuple([int(s) for s in re.findall(r'\b\d+\b', config['admins'], flags=re.MULTILINE)])


def get_isv_bin() -> str:
    return get_config()['isv_bin']


def use_sudo() -> bool:
    config = get_config()
    return 'use_sudo' in config and config['use_sudo'] == '1'