majuna/app/cli/list.py

31 lines
882 B
Python
Raw Normal View History

2022-05-01 17:08:48 +01:00
import json
import logging
import sys
from typing import Any, Callable
2022-05-01 17:08:48 +01:00
from app import app
from app.cli import BaseCliHandler, _SubparserType
2022-05-16 17:09:33 +01:00
from app.lists import lists
from app.models.base import Pool
2022-05-01 17:08:48 +01:00
def dump(list_f: Callable[[Pool], Any]) -> None:
json.dump(list_f(Pool.query.first()), sys.stdout, indent=2)
2022-05-01 17:08:48 +01:00
2022-06-17 13:21:35 +01:00
class ListCliHandler(BaseCliHandler):
2022-05-01 17:08:48 +01:00
@classmethod
2022-05-16 11:44:03 +01:00
def add_subparser_to(cls, subparsers: _SubparserType) -> None:
2022-05-01 17:08:48 +01:00
parser = subparsers.add_parser("list", help="list operations")
2024-12-06 18:15:47 +00:00
parser.add_argument(
"--dump", choices=sorted(lists.keys()), help="dump a list in JSON format"
)
2022-05-01 17:08:48 +01:00
parser.set_defaults(cls=cls)
2022-05-16 11:44:03 +01:00
def run(self) -> None:
2022-05-01 17:08:48 +01:00
with app.app_context():
if self.args.dump:
dump(lists[self.args.dump])
else:
logging.error("No action requested")