From 82b6ed4c75d52f803ca91d81f75b326b02fc010a Mon Sep 17 00:00:00 2001 From: Plom Heller Date: Tue, 25 Aug 2026 18:05:52 +0200 Subject: [PATCH] Use argparse. --- src/run.py | 66 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 27 deletions(-) diff --git a/src/run.py b/src/run.py index afcf6ed..88c20f8 100755 --- a/src/run.py +++ b/src/run.py @@ -2,8 +2,9 @@ """Match command line calls to appropriate scripts.""" # standard libs +from argparse import ArgumentParser from subprocess import CalledProcessError, run as subprocess_run -from sys import argv, exit as sys_exit +from sys import exit as sys_exit # non-standard libs from plomlib.setup import dependency_hint try: @@ -17,34 +18,45 @@ except ModuleNotFoundError as e: dependency_hint(e) +_PATH_UPGRADER = './upgrade_dep.sh' +_CMD_SERVE = 'serve' +_COMMANDS = { + 'make_config': ( + lambda _: Config().save_file()), + 'create_db': ( + lambda _: DbFile.create()), + 'migrate_db': ( + lambda _: DbFile(skip_validations=True).migrate(MIGRATIONS)), + _CMD_SERVE: ( + lambda _: serve()), + 'sync': ( + lambda _: sync()), + 'upgrade_dep': ( + lambda arg: subprocess_run([_PATH_UPGRADER] + arg, check=True)), + } +_UPGRADABLES = ( + 'yt-dlp', + 'google-api-python-client' + ) + + if __name__ == '__main__': + parser = ArgumentParser() + parser.add_argument( + 'command', + nargs='?', + choices=_COMMANDS.keys(), + default=_CMD_SERVE) + parser.add_argument( + 'command_arg', + nargs='?', + choices=_UPGRADABLES, + default=_UPGRADABLES[0]) + args = parser.parse_args() try: - match len(argv): - case 1: - serve() - case 2: - match argv[1]: - case 'make_config': - Config().save_file() - case 'create_db': - DbFile.create() - case 'migrate_db': - DbFile(skip_validations=True).migrate(MIGRATIONS) - case 'serve': - serve() - case 'sync': - sync() - case _: - raise HandledException('Unknown argument.') - case _: - if argv[1] == 'upgrade_dep': - _PATH_UPGRADER = './upgrade_dep.sh' - try: - subprocess_run([_PATH_UPGRADER] + argv[2:], check=True) - except CalledProcessError as e: - sys_exit(e.returncode) - else: - raise HandledException('Bad number of command arguments.') + _COMMANDS[args.command](args.command_arg) + except CalledProcessError as e: + sys_exit(e.returncode) except HandledException as e: print(e) sys_exit(1) -- 2.30.2