From 8fcf9b4785fcadcb9ca58a1d97efac8b099f39a8 Mon Sep 17 00:00:00 2001 From: saces Date: Tue, 17 Mar 2026 10:21:52 +0100 Subject: [PATCH] make the cli more click --- smal/src/pymxutils/mxutils/click.py | 19 +++++++++++++++++++ smal/src/pymxutils/mxutils/whoami.py | 6 +++++- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 smal/src/pymxutils/mxutils/click.py diff --git a/smal/src/pymxutils/mxutils/click.py b/smal/src/pymxutils/mxutils/click.py new file mode 100644 index 0000000..b78a9a7 --- /dev/null +++ b/smal/src/pymxutils/mxutils/click.py @@ -0,0 +1,19 @@ +# Copyright (C) 2026 saces@c-base.org +# SPDX-License-Identifier: AGPL-3.0-only +from functools import partial, wraps + +import click + + +def click_catch_exception(func=None, *, handle): + if not func: + return partial(click_catch_exception, handle=handle) + + @wraps(func) + def wrapper(*args, **kwargs): + try: + return func(*args, **kwargs) + except handle as e: + raise click.ClickException(e) + + return wrapper diff --git a/smal/src/pymxutils/mxutils/whoami.py b/smal/src/pymxutils/mxutils/whoami.py index d811217..8b55e45 100644 --- a/smal/src/pymxutils/mxutils/whoami.py +++ b/smal/src/pymxutils/mxutils/whoami.py @@ -2,11 +2,15 @@ # SPDX-License-Identifier: AGPL-3.0-only import click from pygomx import CliV0 +import pygomx + +from .click import click_catch_exception @click.command() @click.option("-u", "--url", "hs_url", metavar="url", help="homeserver url") @click.option("-t", "--token", "token", metavar="token", help="access token") +@click_catch_exception(handle=(pygomx.errors.APIError)) def whoami(hs_url, token): """this token belongs to?""" @@ -15,4 +19,4 @@ def whoami(hs_url, token): else: cli = CliV0(hs_url, token) - print(cli.Whoami()) + click.echo(cli.Whoami())