"""CLI 向けの補助ユーティリティ。
変換関数が返す pipeline を実行し、進捗バーを表示するデコレータを提供する。
"""
from collections.abc import Callable
from functools import wraps
from typing import Any
from video_converter import progress
[ドキュメント]
def cli_wrapper(func: Callable) -> Callable:
"""CLIラッパーで進捗バーを表示するデコレータ.
see https://qiita.com/moonwalkerpoday/items/9bd987667a860adf80a2.
:param func: ラップする対象の関数
:return: ラップされた関数
"""
@wraps(func)
def wrapper(path: str, *args: Any, **kwargs: Any) -> Any:
"""ラッピングされた関数
:param path: 処理対象のパス
:param args: その他の引数
:param kwargs: キーワード引数
:return: パイプラインの結果
"""
pipeline = func(path, *args, **kwargs)
return progress.run_with_tcp_pbar(path, pipeline)
return wrapper