Mobilizon-Reshare-condividi.../mobilizon_reshare/cli/cli.py

82 lines
2.2 KiB
Python

import functools
import click
from arrow import Arrow
from click import pass_context
from mobilizon_reshare.cli import safe_execution
from mobilizon_reshare.cli.format import format_event
from mobilizon_reshare.cli.inspect_event import inspect_events
from mobilizon_reshare.cli.publish_event.main import main as start_main
from mobilizon_reshare.cli.publish_recap.main import main as recap_main
from mobilizon_reshare.event.event import EventPublicationStatus
settings_file_option = click.option("--settings-file", type=click.Path(exists=True))
from_date_option = click.option(
"--begin",
type=click.DateTime(),
expose_value=True,
help="Include only events that begin after this datetime",
)
to_date_option = click.option(
"--end",
type=click.DateTime(),
expose_value=True,
help="Include only events that begin before this datetime",
)
@click.group()
def mobilizon_reshare():
pass
@mobilizon_reshare.command()
@settings_file_option
def start(settings_file):
safe_execution(start_main, settings_file=settings_file)
@mobilizon_reshare.command()
@settings_file_option
def recap(settings_file):
safe_execution(recap_main, settings_file=settings_file)
@mobilizon_reshare.command()
@from_date_option
@to_date_option
@click.argument("target", type=str)
@settings_file_option
@pass_context
def inspect(ctx, target, begin, end, settings_file):
ctx.ensure_object(dict)
begin = Arrow.fromdatetime(begin) if begin else None
end = Arrow.fromdatetime(end) if end else None
target_to_status = {
"waiting": EventPublicationStatus.WAITING,
"completed": EventPublicationStatus.COMPLETED,
"failed": EventPublicationStatus.FAILED,
"partial": EventPublicationStatus.PARTIAL,
"all": None,
}
safe_execution(
functools.partial(inspect_events, target_to_status[target], frm=begin, to=end,),
settings_file,
)
@mobilizon_reshare.command()
@settings_file_option
@click.argument("event-id", type=str)
@click.argument("publisher", type=str)
def format(settings_file, event_id, publisher):
safe_execution(
functools.partial(format_event, event_id, publisher), settings_file,
)
if __name__ == "__main__":
mobilizon_reshare()