From 891d523751d86963907c3adc0f6b87fde0803c67 Mon Sep 17 00:00:00 2001 From: Simone Robutti Date: Mon, 5 Jul 2021 21:58:29 +0200 Subject: [PATCH] added CLI (#27) --- mobilizon_bots/cli.py | 20 ++++++++++++++++++++ mobilizon_bots/main.py | 3 ++- mobilizon_bots/settings.toml | 8 ++++---- mobilizon_bots/storage/db.py | 5 +++-- poetry.lock | 19 +++++++++++++++++-- pyproject.toml | 4 ++++ 6 files changed, 50 insertions(+), 9 deletions(-) create mode 100644 mobilizon_bots/cli.py diff --git a/mobilizon_bots/cli.py b/mobilizon_bots/cli.py new file mode 100644 index 0000000..efb2e0d --- /dev/null +++ b/mobilizon_bots/cli.py @@ -0,0 +1,20 @@ +import asyncio + +import click + +from mobilizon_bots.main import main + + +@click.group() +def mobilizon_bots(): + pass + + +@mobilizon_bots.command() +def start(): + + asyncio.run(main()) + + +if __name__ == "__main__": + mobilizon_bots() diff --git a/mobilizon_bots/main.py b/mobilizon_bots/main.py index 07106ee..d22bde3 100644 --- a/mobilizon_bots/main.py +++ b/mobilizon_bots/main.py @@ -4,6 +4,7 @@ from pathlib import Path from tortoise import run_async from mobilizon_bots.config.config import settings +from mobilizon_bots.mobilizon.events import get_unpublished_events from mobilizon_bots.storage.db import MobilizonBotsDB from mobilizon_bots.storage.query import get_published_events @@ -18,7 +19,7 @@ async def main(): logging.config.dictConfig(settings.logging) db = MobilizonBotsDB(Path(settings.db_path)) await db.setup() - published_events = get_published_events() + published_events = await get_published_events() unpublished_events = get_unpublished_events(published_events) event = select_event_to_publish() result = PublisherCoordinator(event).publish() if event else exit(0) diff --git a/mobilizon_bots/settings.toml b/mobilizon_bots/settings.toml index be94316..b87d758 100644 --- a/mobilizon_bots/settings.toml +++ b/mobilizon_bots/settings.toml @@ -1,8 +1,8 @@ [default] debug = true default = true -local_state_dir = "/var/mobots" -log_dir = "/var/log/mobots" +local_state_dir = "/var/mobilizon_bots" +log_dir = "/var/log/mobilizon_bots" db_name = "events.db" db_path = "@format {this.local_state_dir}/{this.db_name}" @@ -57,7 +57,7 @@ class = "logging.StreamHandler" formatter = "standard" stream = "ext://sys.stderr" -[default.logging.handlers.logfile] +[default.logging.handlers.file] level = "DEBUG" class = "logging.handlers.RotatingFileHandler" formatter = "standard" @@ -68,7 +68,7 @@ encoding = "utf8" [default.logging.root] level = "DEBUG" -handlers = ['console', 'logfile'] +handlers = ['console', 'file'] [testing] DEBUG = true diff --git a/mobilizon_bots/storage/db.py b/mobilizon_bots/storage/db.py index 7a2f37d..e18b15a 100644 --- a/mobilizon_bots/storage/db.py +++ b/mobilizon_bots/storage/db.py @@ -41,5 +41,6 @@ class MobilizonBotsDB: @atexit.register def gracefully_tear_down(): logger.info("Shutting down DB") - loop = asyncio.get_event_loop() - loop.run_until_complete(Tortoise.close_connections()) + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + asyncio.run(Tortoise.close_connections()) diff --git a/poetry.lock b/poetry.lock index 95fecc2..cc25b96 100644 --- a/poetry.lock +++ b/poetry.lock @@ -66,11 +66,22 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "click" +version = "8.0.1" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + [[package]] name = "colorama" version = "0.4.4" description = "Cross-platform colored terminal text." -category = "dev" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" @@ -333,7 +344,7 @@ python-versions = "*" [metadata] lock-version = "1.1" python-versions = "^3.9" -content-hash = "e7498886449b92f3665ecb67bbc223063789c03ddcc7a35b5dee9dd9132b56b2" +content-hash = "f11fdba0a8d8fed33e35ec9b95f5768a7fc7ded4c06e009624469b6d5ab6762e" [metadata.files] aiosqlite = [ @@ -364,6 +375,10 @@ chardet = [ {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"}, {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"}, ] +click = [ + {file = "click-8.0.1-py3-none-any.whl", hash = "sha256:fba402a4a47334742d782209a7c79bc448911afe1149d07bdabdf480b3e2f4b6"}, + {file = "click-8.0.1.tar.gz", hash = "sha256:8c04c11192119b1ef78ea049e0a6f0463e4c48ef00a30160c704337586f3ad7a"}, +] colorama = [ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, diff --git a/pyproject.toml b/pyproject.toml index 2969b01..1a389f5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,6 +12,7 @@ aiosqlite = "^0.16" Jinja2 = "^2.11.3" requests = "^2.25.1" arrow = "^1.1.0" +click = "^8.0.1" [tool.poetry.dev-dependencies] asynctest = "^0.13" @@ -22,3 +23,6 @@ pytest-asyncio = "^0.10" [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" + +[tool.poetry.scripts] +mobilizon-bots="mobilizon_bots.cli:mobilizon_bots" \ No newline at end of file