diff --git a/molodetz/cli/__init__.py b/molodetz/cli/__init__.py index d9d906a..158f219 100644 --- a/molodetz/cli/__init__.py +++ b/molodetz/cli/__init__.py @@ -1,86 +1,4 @@ # retoor -import argparse -import sys +from molodetz.cli.main import build_parser, main -from molodetz.cli import commands - - -def build_parser(): - parser = argparse.ArgumentParser(prog="molodetz", description="Beheer-CLI voor Molodetz.") - groups = parser.add_subparsers(dest="group", required=True) - - role = groups.add_parser("role", help="Rollen lezen en zetten").add_subparsers(dest="action", required=True) - role_get = role.add_parser("get") - role_get.add_argument("username") - role_get.set_defaults(handler=commands.role_get) - role_set = role.add_parser("set") - role_set.add_argument("username") - role_set.add_argument("role", choices=["Member", "Admin"]) - role_set.set_defaults(handler=commands.role_set) - - apikey = groups.add_parser("apikey", help="API-sleutels").add_subparsers(dest="action", required=True) - key_get = apikey.add_parser("get") - key_get.add_argument("username") - key_get.set_defaults(handler=commands.apikey_get) - key_reset = apikey.add_parser("reset") - key_reset.add_argument("username") - key_reset.set_defaults(handler=commands.apikey_reset) - apikey.add_parser("backfill").set_defaults(handler=commands.apikey_backfill) - - posts = groups.add_parser("posts", help="Berichten").add_subparsers(dest="action", required=True) - posts.add_parser("list").set_defaults(handler=commands.posts_list) - posts_import = posts.add_parser("import", help="Importeer .md of .pdf als concept") - posts_import.add_argument("path") - posts_import.add_argument("--topic", default="rol", choices=["rol", "standaard"]) - posts_import.add_argument("--title") - posts_import.add_argument("--publish", action="store_true") - posts_import.set_defaults(handler=commands.posts_import) - - joins = groups.add_parser("joins", help="Aanmeldingen").add_subparsers(dest="action", required=True) - joins.add_parser("list").set_defaults(handler=commands.joins_list) - - backups = groups.add_parser("backups", help="Back-ups").add_subparsers(dest="action", required=True) - backups.add_parser("list").set_defaults(handler=commands.backups_list) - backup_run = backups.add_parser("run") - backup_run.add_argument("--target", default="database", choices=["database", "uploads", "keys", "full"]) - backup_run.add_argument("--codec", default="zstd", choices=["zstd", "brotli"]) - backup_run.set_defaults(handler=commands.backups_run) - backup_prune = backups.add_parser("prune") - backup_prune.add_argument("--keep", type=int, default=14) - backup_prune.add_argument("--dry-run", action="store_true") - backup_prune.set_defaults(handler=commands.backups_prune) - backup_clear = backups.add_parser("clear") - backup_clear.add_argument("--dry-run", action="store_true") - backup_clear.set_defaults(handler=commands.backups_clear) - - sessions = groups.add_parser("sessions", help="Sessies").add_subparsers(dest="action", required=True) - sessions_prune = sessions.add_parser("prune") - sessions_prune.add_argument("--dry-run", action="store_true") - sessions_prune.set_defaults(handler=commands.sessions_prune) - - audit = groups.add_parser("audit", help="Auditlog").add_subparsers(dest="action", required=True) - audit_prune = audit.add_parser("prune") - audit_prune.add_argument("--days", type=int, default=365) - audit_prune.add_argument("--dry-run", action="store_true") - audit_prune.set_defaults(handler=commands.audit_prune) - - system = groups.add_parser("system", help="Systeemonderhoud").add_subparsers(dest="action", required=True) - system_prune = system.add_parser("prune", help="Verwijder wees-blobs") - system_prune.add_argument("--dry-run", action="store_true") - system_prune.set_defaults(handler=commands.system_prune) - system.add_parser("sql-lint", help="Parse alle SQL-literals met sqlglot").set_defaults(handler=commands.system_sql_lint) - - emoji = groups.add_parser("emoji", help="Emoji-kaart").add_subparsers(dest="action", required=True) - emoji.add_parser("regenerate").set_defaults(handler=commands.emoji_regenerate) - return parser - - -def main(argv=None): - parser = build_parser() - args = parser.parse_args(argv) - commands.prepare() - return args.handler(args) or 0 - - -if __name__ == "__main__": - sys.exit(main()) +__all__ = ["build_parser", "main"] diff --git a/molodetz/cli/__main__.py b/molodetz/cli/__main__.py index 6dc78c9..f30511b 100644 --- a/molodetz/cli/__main__.py +++ b/molodetz/cli/__main__.py @@ -1,6 +1,6 @@ # retoor import sys -from molodetz.cli import main +from molodetz.cli.main import main sys.exit(main()) diff --git a/molodetz/cli/main.py b/molodetz/cli/main.py new file mode 100644 index 0000000..d9d906a --- /dev/null +++ b/molodetz/cli/main.py @@ -0,0 +1,86 @@ +# retoor +import argparse +import sys + +from molodetz.cli import commands + + +def build_parser(): + parser = argparse.ArgumentParser(prog="molodetz", description="Beheer-CLI voor Molodetz.") + groups = parser.add_subparsers(dest="group", required=True) + + role = groups.add_parser("role", help="Rollen lezen en zetten").add_subparsers(dest="action", required=True) + role_get = role.add_parser("get") + role_get.add_argument("username") + role_get.set_defaults(handler=commands.role_get) + role_set = role.add_parser("set") + role_set.add_argument("username") + role_set.add_argument("role", choices=["Member", "Admin"]) + role_set.set_defaults(handler=commands.role_set) + + apikey = groups.add_parser("apikey", help="API-sleutels").add_subparsers(dest="action", required=True) + key_get = apikey.add_parser("get") + key_get.add_argument("username") + key_get.set_defaults(handler=commands.apikey_get) + key_reset = apikey.add_parser("reset") + key_reset.add_argument("username") + key_reset.set_defaults(handler=commands.apikey_reset) + apikey.add_parser("backfill").set_defaults(handler=commands.apikey_backfill) + + posts = groups.add_parser("posts", help="Berichten").add_subparsers(dest="action", required=True) + posts.add_parser("list").set_defaults(handler=commands.posts_list) + posts_import = posts.add_parser("import", help="Importeer .md of .pdf als concept") + posts_import.add_argument("path") + posts_import.add_argument("--topic", default="rol", choices=["rol", "standaard"]) + posts_import.add_argument("--title") + posts_import.add_argument("--publish", action="store_true") + posts_import.set_defaults(handler=commands.posts_import) + + joins = groups.add_parser("joins", help="Aanmeldingen").add_subparsers(dest="action", required=True) + joins.add_parser("list").set_defaults(handler=commands.joins_list) + + backups = groups.add_parser("backups", help="Back-ups").add_subparsers(dest="action", required=True) + backups.add_parser("list").set_defaults(handler=commands.backups_list) + backup_run = backups.add_parser("run") + backup_run.add_argument("--target", default="database", choices=["database", "uploads", "keys", "full"]) + backup_run.add_argument("--codec", default="zstd", choices=["zstd", "brotli"]) + backup_run.set_defaults(handler=commands.backups_run) + backup_prune = backups.add_parser("prune") + backup_prune.add_argument("--keep", type=int, default=14) + backup_prune.add_argument("--dry-run", action="store_true") + backup_prune.set_defaults(handler=commands.backups_prune) + backup_clear = backups.add_parser("clear") + backup_clear.add_argument("--dry-run", action="store_true") + backup_clear.set_defaults(handler=commands.backups_clear) + + sessions = groups.add_parser("sessions", help="Sessies").add_subparsers(dest="action", required=True) + sessions_prune = sessions.add_parser("prune") + sessions_prune.add_argument("--dry-run", action="store_true") + sessions_prune.set_defaults(handler=commands.sessions_prune) + + audit = groups.add_parser("audit", help="Auditlog").add_subparsers(dest="action", required=True) + audit_prune = audit.add_parser("prune") + audit_prune.add_argument("--days", type=int, default=365) + audit_prune.add_argument("--dry-run", action="store_true") + audit_prune.set_defaults(handler=commands.audit_prune) + + system = groups.add_parser("system", help="Systeemonderhoud").add_subparsers(dest="action", required=True) + system_prune = system.add_parser("prune", help="Verwijder wees-blobs") + system_prune.add_argument("--dry-run", action="store_true") + system_prune.set_defaults(handler=commands.system_prune) + system.add_parser("sql-lint", help="Parse alle SQL-literals met sqlglot").set_defaults(handler=commands.system_sql_lint) + + emoji = groups.add_parser("emoji", help="Emoji-kaart").add_subparsers(dest="action", required=True) + emoji.add_parser("regenerate").set_defaults(handler=commands.emoji_regenerate) + return parser + + +def main(argv=None): + parser = build_parser() + args = parser.parse_args(argv) + commands.prepare() + return args.handler(args) or 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/pyproject.toml b/pyproject.toml index ba7b29f..f4688bd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "molodetz" -version = "1.0.0" +version = "1.0.1" description = "Molodetz, a calm community blog roll." readme = "README.md" requires-python = ">=3.12" @@ -47,7 +47,7 @@ dev = [ ] [project.scripts] -molodetz = "molodetz.cli:main" +molodetz = "molodetz.cli.main:main" [tool.setuptools.packages.find] include = ["molodetz*"]