diff --git a/.gitignore b/.gitignore index c462074..9652b29 100644 --- a/.gitignore +++ b/.gitignore @@ -65,3 +65,6 @@ target/ .idea/ Pipfile.lock +*.directory + +data/ diff --git a/main.py b/main.py index 3e04bf6..1ee94d8 100644 --- a/main.py +++ b/main.py @@ -1,7 +1,74 @@ +import os +import logging +import logging.config import socket +import asyncio +import json -s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) -s.connect("../bot-base.sock") -while True: - s.send(input(">>> ").encode('utf-8')) -s.close() + +def setup_logging(default_path='config/log_config.json', default_level=logging.INFO, env_key='PDBd_LOG_CONFIG'): + """Setup logging configuration + """ + path = default_path + value = os.getenv(env_key, None) + if value: + path = value + if os.path.exists(path): + with open(path, 'rt') as f: + config = json.load(f) + logging.config.dictConfig(config) + else: + logging.basicConfig(level=default_level) + +setup_logging() +class Logger(object): + def __init__(self, name): + self.__name__=name + self.logger=logging.getLogger(self.__name__) + self.debug = self.logger.debug + self.info = self.logger.info + self.warning = self.logger.warning + self.error = self.logger.error + self.critical = self.logger.critical + +class Bot(Logger): + pass + + +class PDBd(Logger): + def handle_exception(self, loop, context): + # context["message"] will always be there; but context["exception"] may not + msg = context.get("exception", context["message"]) + self.critical(f"Critical Runtime Error: {msg}") + self.info("Shutting down...") + loop.stop() + + async def setup_data(self): + + if not os.path.exists("data"): + self.warning("Data folder doesn't exist.") + self.info("Creating data folder.") + os.makedirs("data") + else: + if not os.path.isdir("data"): + raise Exception("Data is not a folder") + + + + async def run(self): + self.info(self.__name__+" is starting...") + loop.set_exception_handler(self.handle_exception) + await self.setup_data() + """self.info("Connecting...") + s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + s.connect("../bot-base.sock") + self.info("Connected.") + while True: + s.send(input(">>> ").encode('utf-8')) + s.close()""" + loop.stop() + +daemon=PDBd("PDBd") +loop = asyncio.get_event_loop() +loop.create_task(daemon.run()) +loop.run_forever()