-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
46 lines (38 loc) · 1.5 KB
/
Copy pathmain.py
File metadata and controls
46 lines (38 loc) · 1.5 KB
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
from argparse import ArgumentParser
from os import environ
from signal import SIG_BLOCK, SIGINT, SIGTERM, pthread_sigmask, sigwait
from config import ConfigManager
from controller import ExtensibleCoverController
from hardware import ConfigBasedHardwareAccess
from persistence import ConfigBasedPersistenceProvider
from persistence.config import ConfigFile
from presentation.http import FlaskHttpFrontend
from presentation.mqtt import PahoMqttFrontend
from utils.log import setup_log
cmdline = ArgumentParser("pypoolpi")
cmdline.add_argument(
"-c",
"--config",
default=environ.get("PYPOOLPI_CONFIG", "pypoolpi.config.toml"),
dest="config_path",
help="Path to the config file (default: pypoolpi.config.toml)",
)
args = cmdline.parse_args()
config_manager = ConfigManager()
config_file = ConfigFile(config_manager, args.config_path)
setup_log(config_manager)
persistence_provider = ConfigBasedPersistenceProvider(config_manager)
hardware_access = ConfigBasedHardwareAccess(config_manager)
cover_controller = ExtensibleCoverController(config_manager, hardware_access, hardware_access, persistence_provider)
mqtt_frontend = PahoMqttFrontend(config_manager, cover_controller)
http_frontend = FlaskHttpFrontend(config_manager, cover_controller)
signals = {SIGINT, SIGTERM}
pthread_sigmask(SIG_BLOCK, signals)
sigwait(signals)
http_frontend.shutdown()
mqtt_frontend.shutdown()
cover_controller.shutdown()
hardware_access.shutdown()
persistence_provider.shutdown()
config_file.shutdown()
config_manager.shutdown()