diff --git a/conmorfeusz/conmorfeusz/cli/__init__.py b/conmorfeusz/conmorfeusz/cli/__init__.py new file mode 100644 index 0000000..0620489 --- /dev/null +++ b/conmorfeusz/conmorfeusz/cli/__init__.py @@ -0,0 +1,30 @@ +import os +import click +import conmorfeusz.web as web +import conmorfeusz.concraft as ccpl + +@click.command() +@click.option('--port', default=5000, help='Port on which the application will be listening to.') +@click.option('--ccpl-port', default=3000, help='Port on which internal concraft-pl server will be listening to.') +@click.option('--ccpl-model', default=None, help='Model used by concraft-pl. It will fallback to CONCRAFT_PL_MODEL envvar if not specified.') +@click.option('--ccpl-bin', default=None, help='Concraft-pl binary file. It will fallback to CONCRAFT_PL_BIN envvar if not specified.') +@click.option('--ccpl-core-num', default=1, help='Number of cores used to run Concraft-pl logic.') +@click.option('--ccpl-alloc-size', default=64, help='Allocation size for Concraft-pl.') +def run(port, ccpl_port, ccpl_model, ccpl_bin, ccpl_core_num, ccpl_alloc_size): + """ + Glues all services together and starts the holistic app. + """ + + ccpl_model = ccpl_model or os.environ.get('CONCRAFT_PL_MODEL') + ccpl_bin = ccpl_bin or os.environ.get('CONCRAFT_PL_BIN') + + if ccpl_model is None: + raise Exception("Model must be specified either by --ccpl-model option or by CONCRAFT_PL_MODEL environment variable") + + if ccpl_bin is None: + raise Exception("Concraft-pl binary file must be specified either by --ccpl-bin option or by CONCRAFT_PL_BIN environment variable") + + concraft_cfg = (ccpl_model, ccpl_bin, ccpl_port, ccpl_core_num, ccpl_alloc_size) + + with ccpl.start_server(*concraft_cfg): + web.start(port) diff --git a/conmorfeusz/conmorfeusz/main.py b/conmorfeusz/conmorfeusz/main.py index 6d325e7..39aac1c 100644 --- a/conmorfeusz/conmorfeusz/main.py +++ b/conmorfeusz/conmorfeusz/main.py @@ -1,14 +1,5 @@ -import os -from . import runner +from . import cli def main(): - exe = os.environ.get('CONCRAFT_PL_BIN') - model = os.environ.get('CONCRAFT_PL_MODEL') - port=3000 - core_num=1 - allocation_size=64 - - concraft_cfg = (model, exe, port, core_num, allocation_size) - runner.run(concraft_cfg) - + cli.run() \ No newline at end of file diff --git a/conmorfeusz/conmorfeusz/runner/__init__.py b/conmorfeusz/conmorfeusz/runner/__init__.py deleted file mode 100644 index 32cb3cc..0000000 --- a/conmorfeusz/conmorfeusz/runner/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -import conmorfeusz.web as web -import conmorfeusz.concraft as cc - -def run(concraft): - """ - Glues all services together and starts the holistic app. - """ - with cc.start_server(*concraft): - web.start() \ No newline at end of file diff --git a/conmorfeusz/conmorfeusz/web/__init__.py b/conmorfeusz/conmorfeusz/web/__init__.py index fedbfa4..cf26804 100644 --- a/conmorfeusz/conmorfeusz/web/__init__.py +++ b/conmorfeusz/conmorfeusz/web/__init__.py @@ -11,6 +11,6 @@ def create_app(): return app -def start(): +def start(port): app = create_app() - app.run() \ No newline at end of file + app.run(port=port) \ No newline at end of file diff --git a/conmorfeusz/default.nix b/conmorfeusz/default.nix index 134cdcc..b8e2420 100644 --- a/conmorfeusz/default.nix +++ b/conmorfeusz/default.nix @@ -48,6 +48,7 @@ in morfeusz2 flask requests + click ]; nativeBuildInputs = with pythonPackages; [ diff --git a/conmorfeusz/pyproject.toml b/conmorfeusz/pyproject.toml index 6790162..9642be3 100644 --- a/conmorfeusz/pyproject.toml +++ b/conmorfeusz/pyproject.toml @@ -11,7 +11,8 @@ requires-python = "==3.6" dependencies = [ "morfeusz2==1.99.12", "flask", - "requests" + "requests", + "click" ] [tool.setuptools.packages.find]