105 lines
3.2 KiB
Python
105 lines
3.2 KiB
Python
#!/usr/bin/env python3
|
|
"""Administrative CLI for download link database."""
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
|
|
from admin_links import cmd_add
|
|
from admin_links import cmd_ban
|
|
from admin_links import cmd_disable
|
|
from admin_links import cmd_enable
|
|
from admin_links import cmd_import
|
|
from admin_links import cmd_list
|
|
from admin_links import cmd_remove
|
|
from admin_links import cmd_rename
|
|
from admin_links import cmd_unban
|
|
from admin_links import cmd_validate_import
|
|
from admin_links import cmd_fix_revision
|
|
from admin_links import cmd_fix_x_media
|
|
from admin_users import cmd_user_rename
|
|
from admin_users import cmd_users
|
|
|
|
|
|
def build_parser() -> argparse.ArgumentParser:
|
|
parser = argparse.ArgumentParser(prog="download-admin")
|
|
sub = parser.add_subparsers(dest="cmd", required=True)
|
|
|
|
p_add = sub.add_parser("add")
|
|
p_add.add_argument("user")
|
|
p_add.add_argument("url")
|
|
p_add.add_argument("--assume-yes", action="store_true")
|
|
p_add.set_defaults(func=cmd_add)
|
|
|
|
p_disable = sub.add_parser("disable")
|
|
p_disable.add_argument("user")
|
|
p_disable.add_argument("url", nargs="?")
|
|
p_disable.set_defaults(func=cmd_disable)
|
|
|
|
p_enable = sub.add_parser("enable")
|
|
p_enable.add_argument("user")
|
|
p_enable.add_argument("url", nargs="?")
|
|
p_enable.set_defaults(func=cmd_enable)
|
|
|
|
p_ban = sub.add_parser("ban")
|
|
p_ban.add_argument("user")
|
|
p_ban.add_argument("url", nargs="?")
|
|
p_ban.add_argument("--reason")
|
|
p_ban.set_defaults(func=cmd_ban)
|
|
|
|
p_unban = sub.add_parser("unban")
|
|
p_unban.add_argument("user")
|
|
p_unban.add_argument("url", nargs="?")
|
|
p_unban.set_defaults(func=cmd_unban)
|
|
|
|
p_remove = sub.add_parser("remove")
|
|
p_remove.add_argument("user")
|
|
p_remove.add_argument("url", nargs="?")
|
|
p_remove.set_defaults(func=cmd_remove)
|
|
|
|
p_rename = sub.add_parser("rename")
|
|
p_rename.add_argument("user")
|
|
p_rename.add_argument("old_url", nargs="?")
|
|
p_rename.add_argument("new_url", nargs="?")
|
|
p_rename.set_defaults(func=cmd_rename)
|
|
|
|
p_list = sub.add_parser("list")
|
|
p_list.add_argument("--user", action="append")
|
|
p_list.add_argument("--disabled", action="store_true")
|
|
p_list.add_argument("--banned", action="store_true")
|
|
p_list.add_argument("--requires-revision", action="store_true")
|
|
p_list.set_defaults(func=cmd_list)
|
|
|
|
p_users = sub.add_parser("users")
|
|
p_users.set_defaults(func=cmd_users)
|
|
|
|
p_import = sub.add_parser("import")
|
|
p_import.set_defaults(func=cmd_import)
|
|
|
|
p_validate = sub.add_parser("validate-import")
|
|
p_validate.set_defaults(func=cmd_validate_import)
|
|
|
|
p_fix_rev = sub.add_parser("fix-revision")
|
|
p_fix_rev.set_defaults(func=cmd_fix_revision)
|
|
|
|
p_fix_media = sub.add_parser("fix-x-media")
|
|
p_fix_media.set_defaults(func=cmd_fix_x_media)
|
|
|
|
p_user_rename = sub.add_parser("user-rename")
|
|
p_user_rename.add_argument("user")
|
|
p_user_rename.add_argument("site")
|
|
p_user_rename.add_argument("old")
|
|
p_user_rename.add_argument("new")
|
|
p_user_rename.set_defaults(func=cmd_user_rename)
|
|
|
|
return parser
|
|
|
|
|
|
def main() -> None:
|
|
parser = build_parser()
|
|
args = parser.parse_args()
|
|
args.func(args)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|