blob: 83243a002ecd51c4bb8979b38bb011cb2631707c (
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
|
import sys
import __main__
import os.path
import yaml
class Config:
INPUT_PW = "pw-record"
INPUT_STDIN = "stdin"
INPUT_MODES = [INPUT_PW, INPUT_STDIN]
def __init__(self):
self.input_mode = ""
self.intents_dir = ""
self.applications_dir = ""
self.lock = ""
def update(self, **entries):
self.__dict__.update(entries)
if not self.intents_dir.startswith("/"):
self.intents_dir = os.path.join(os.path.dirname(__main__.__file__), self.intents_dir)
def validate(self):
if self.input_mode not in self.INPUT_MODES:
sys.exit(f"Invalid input_mode '{self.input_mode}', valid options: {", ".join(self.INPUT_MODES)}")
def load_config():
config = Config()
with open(os.path.join(os.path.dirname(__main__.__file__), "config.yaml")) as stream:
config.update(**yaml.safe_load(stream))
user_config = os.path.join(os.environ["HOME"], ".config", "hestia", "config.yaml")
if os.path.exists(user_config):
with open(user_config) as stream:
config.update(**yaml.safe_load(stream))
config.validate()
return config
|