20 lines
455 B
Python
20 lines
455 B
Python
|
|
# 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
|