From c3210bf5b013f77f8be8f0c2c9b6f832d418aa1b Mon Sep 17 00:00:00 2001 From: Luna Mendes Date: Tue, 6 Nov 2018 18:43:36 -0300 Subject: [PATCH] manage: add dummy migration command --- manage/cmd/migration/__init__.py | 1 + manage/cmd/migration/command.py | 17 +++++++++++++++++ manage/main.py | 30 +++++++++++++++++++++++++++++- 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 manage/cmd/migration/__init__.py create mode 100644 manage/cmd/migration/command.py diff --git a/manage/cmd/migration/__init__.py b/manage/cmd/migration/__init__.py new file mode 100644 index 0000000..3a9fa59 --- /dev/null +++ b/manage/cmd/migration/__init__.py @@ -0,0 +1 @@ +from .command import setup as migration diff --git a/manage/cmd/migration/command.py b/manage/cmd/migration/command.py new file mode 100644 index 0000000..0296df6 --- /dev/null +++ b/manage/cmd/migration/command.py @@ -0,0 +1,17 @@ +async def migrate_cmd(app, args): + """Main migration command. + + This makes sure the database + is updated. + """ + print('not implemented yet') + + +def setup(subparser): + migrate_parser = subparser.add_parser( + 'migrate', + help='Run migration tasks', + description=migrate_cmd.__doc__ + ) + + migrate_parser.set_defaults(func=migrate_cmd) diff --git a/manage/main.py b/manage/main.py index b05d6db..7cb0f99 100644 --- a/manage/main.py +++ b/manage/main.py @@ -1,8 +1,14 @@ import asyncio +import argparse +from sys import argv from dataclasses import dataclass +from logbook import Logger from run import init_app_managers, init_app_db +from manage.cmd.migration import migration + +log = Logger(__name__) @dataclass @@ -18,6 +24,15 @@ class FakeApp: presence = None +def init_parser(): + parser = argparse.ArgumentParser() + subparser = parser.add_subparsers(help='operations') + + migration(subparser) + + return parser + + def main(config): """Start the script""" loop = asyncio.get_event_loop() @@ -27,4 +42,17 @@ def main(config): loop.run_until_complete(init_app_db(app)) init_app_managers(app) - print(app) + # initialize argparser + parser = init_parser() + + try: + if len(argv) < 2: + parser.print_help() + return + + args = parser.parse_args() + loop.run_until_complete(args.func(app, args)) + except Exception: + log.exception('error while running command') + finally: + loop.run_until_complete(app.db.close())