"""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:
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)