From 59cb7bc9534272aab024a5b83b6ed9f8c141defc Mon Sep 17 00:00:00 2001 From: deadc0de6 Date: Mon, 3 Apr 2023 23:04:23 +0200 Subject: [PATCH] do not depend on fusepy and pyfzf --- catcli/catcli.py | 16 +++++++++++----- catcli/fuser.py | 5 ++++- catcli/noder.py | 14 +++++++++----- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/catcli/catcli.py b/catcli/catcli.py index 65da0d6..bff10c5 100755 --- a/catcli/catcli.py +++ b/catcli/catcli.py @@ -23,7 +23,6 @@ from catcli.catalog import Catalog from catcli.walker import Walker from catcli.noder import Noder from catcli.utils import ask, edit, path_to_search_all -from catcli.fuser import Fuser from catcli.exceptions import BadFormatException, CatcliException NAME = 'catcli' @@ -82,12 +81,18 @@ Options: def cmd_mount(args: Dict[str, Any], top: NodeTop, - noder: Noder) -> None: + noder: Noder) -> bool: """mount action""" mountpoint = args[''] debug = args['--verbose'] - Fuser(mountpoint, top, noder, - debug=debug) + try: + from catcli.fuser import Fuser # pylint: disable=C0415 + Fuser(mountpoint, top, noder, + debug=debug) + except ModuleNotFoundError: + Logger.err('install fusepy to use mount') + return False + return True def cmd_index(args: Dict[str, Any], @@ -346,7 +351,8 @@ def main() -> bool: if not catalog.exists(): Logger.err(f'no such catalog: {catalog_path}') return False - cmd_mount(args, top, noder) + if not cmd_mount(args, top, noder): + return False elif args['rm']: if not catalog.exists(): Logger.err(f'no such catalog: {catalog_path}') diff --git a/catcli/fuser.py b/catcli/fuser.py index 6f220a5..935a663 100644 --- a/catcli/fuser.py +++ b/catcli/fuser.py @@ -9,7 +9,10 @@ import os from time import time from stat import S_IFDIR, S_IFREG from typing import List, Dict, Any, Optional -import fuse # type: ignore +try: + import fuse # type: ignore +except ModuleNotFoundError: + pass # local imports from catcli.noder import Noder diff --git a/catcli/noder.py b/catcli/noder.py index 187d3d9..c81dae0 100644 --- a/catcli/noder.py +++ b/catcli/noder.py @@ -10,7 +10,6 @@ import shutil import time from typing import List, Union, Tuple, Any, Optional, Dict, cast import anytree # type: ignore -from pyfzf.pyfzf import FzfPrompt # type: ignore # local imports from catcli import nodes @@ -506,10 +505,15 @@ class Noder: @staticmethod def _fzf_prompt(strings: Any) -> Any: - # prompt with fzf - fzf = FzfPrompt() - selected = fzf.prompt(strings) - return selected + """prompt with fzf""" + try: + from pyfzf.pyfzf import FzfPrompt # type: ignore # pylint: disable=C0415 # noqa + fzf = FzfPrompt() + selected = fzf.prompt(strings) + return selected + except ModuleNotFoundError: + Logger.err('install pyfzf to use fzf') + return None def _to_fzf(self, node: NodeAny, fmt: str) -> None: """