aboutsummaryrefslogtreecommitdiffstats
path: root/aggro.py
blob: 30b176e36f7d995707528d456cd69d5752462c73 (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
import json
import os
import threading
import time
from app.AggroConfig import AggroConfig
from app.MemoryState import memory_state
from app.PluginManager import PluginManager
from app.database import setup_db


def run_plugin_thread():
    print("Plugin thread starting...")
    manager.run()
    print("Plugin thread exiting...")


if __name__ == "__main__":
    print("Starting aggro. Press CTRL-C to exit.")

    aggrofile_path = os.environ.get("AGGRO_CONFIG_PATH", "Aggrofile")

    with open(aggrofile_path) as f:
        aggrofile_content = json.loads(f.read())

    aggro_config = AggroConfig(
        db_path=aggrofile_content.get("db_path", "db.json"),
        plugins=aggrofile_content["plugins"],
        graph=aggrofile_content["graph"],
    )

    setup_db(aggro_config)

    manager = PluginManager(aggro_config)
    manager.build_plugin_instances()

    memory_state.running = True

    plugin_thread = threading.Thread(target=run_plugin_thread)
    plugin_thread.start()

    try:
        while memory_state.running:
            time.sleep(0.1)
    except KeyboardInterrupt:
        memory_state.running = False
        print("Waiting for threads to exit...")
        plugin_thread.join()
        print("Main thread exiting...")