diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..356eec1 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule ".\\src\\modules\\console"] + path = .\\src\\modules\\console + url = https://github.com/SantaSpeen/cli-in-python diff --git a/requirements.txt b/requirements.txt index 5ca893e..b78224c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ -PyYAML~=6.0 \ No newline at end of file +PyYAML~=6.0 +aioconsole diff --git a/src/__version__.py b/src/__version__.py index 5ed683d..51b8981 100644 --- a/src/__version__.py +++ b/src/__version__.py @@ -3,8 +3,8 @@ __title__ = 'KuiToi-Server' __description__ = 'BeamingDrive Multiplayer server compatible with BeamMP clients.' __url__ = 'https://github.com/kuitoi/kuitoi-Server' -__version__ = '0.0.3' -__build__ = 21 +__version__ = '0.1.0' +__build__ = 36 __author__ = 'SantaSpeen' __author_email__ = 'SantaSpeen@gmail.com' __license__ = "FPA" diff --git a/src/main.py b/src/main.py index ece24bf..e581d2b 100644 --- a/src/main.py +++ b/src/main.py @@ -1,4 +1,13 @@ +#!/usr/bin/python3 import argparse +import asyncio + +try: + from modules.console.src.console import Console, ConsoleIO +except ImportError: + Console, ConsoleIO = None, None + print("Clone with submodules!") + exit(1) import __version__ import config_provider @@ -8,9 +17,12 @@ parser = argparse.ArgumentParser(description='KuiToi-Server - BeamingDrive serve parser.add_argument('-v', '--version', action="store_true", help='Print version and exit.', default=False) parser.add_argument('--config', help='Patch to config file.', nargs='?', default=None, type=str) log = utils.get_logger("main") +loop = asyncio.new_event_loop() +asyncio.set_event_loop(loop) +console = Console(prompt_out=":", async_loop=loop) -def main(): +def init(): global log log.info("Hello from KuiToi-Server!") args = parser.parse_args() @@ -31,6 +43,26 @@ def main(): log = utils.get_logger("main") log.debug("Debug mode enabled!") log.debug(f"Server config: {config}") + console.builtins_hook() + console.logger_hook() + + +def start(): + tasks = [ + loop.create_task(console.async_run()), + ] + + loop.run_until_complete(asyncio.wait(tasks)) + + +def end(): + log.info("Goodbye!") + if __name__ == '__main__': - main() + init() + try: + start() + except KeyboardInterrupt: + print("Exiting..") + end() diff --git a/src/modules/console b/src/modules/console new file mode 160000 index 0000000..8cd4e59 --- /dev/null +++ b/src/modules/console @@ -0,0 +1 @@ +Subproject commit 8cd4e59918f259d08f3d3d79071e1cc8d7630fe9