added CLI (#27)

This commit is contained in:
Simone Robutti 2021-07-05 21:58:29 +02:00 committed by GitHub
parent de3e503cd6
commit 891d523751
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 50 additions and 9 deletions

20
mobilizon_bots/cli.py Normal file
View File

@ -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()

View File

@ -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)

View File

@ -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

View File

@ -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())

19
poetry.lock generated
View File

@ -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"},

View File

@ -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"