From 3c0658c98e9b1b494137e435f985c0f4f5834c70 Mon Sep 17 00:00:00 2001 From: Shane Jaroch Date: Fri, 26 Dec 2025 01:40:30 -0500 Subject: [PATCH] fix edge cases with argcomplete --- ffpass/__init__.py | 40 +++++++++++++++++++++++++--------------- requirements.txt | 5 +++-- 2 files changed, 28 insertions(+), 17 deletions(-) mode change 100644 => 100755 ffpass/__init__.py diff --git a/ffpass/__init__.py b/ffpass/__init__.py old mode 100644 new mode 100755 index 1282af5..e531a77 --- a/ffpass/__init__.py +++ b/ffpass/__init__.py @@ -559,41 +559,51 @@ def makeParser(): # This allows arbitrary paths (tests) but gives users tab completion. arg.completer = lambda **kwargs: [str(p) for p in getProfiles()] - try: - pass - except ImportError: - pass sub.add_argument("-v", "--verbose", action="store_true") sub.add_argument("--debug", action="store_true") parser_import.set_defaults(func=main_import) parser_export.set_defaults(func=main_export) + return parser + + +def setLogLevel(args): + + if args.debug: + logging.getLogger().setLevel(logging.DEBUG) + elif args.verbose: + logging.getLogger().setLevel(logging.INFO) + + +def tryLoadArgcomplete(parser): + try: import argcomplete argcomplete.autocomplete(parser) + except ModuleNotFoundError: logging.info( - "You can run 'pip install argcomplete' and add the hook to your shell RC for tab completion." + "NOTE: You can run 'pip install argcomplete' " + "and add the hook to your shell RC for tab completion." ) - return parser - def main(): - # default log level is warning + + # Default log level is warning logging.basicConfig(level=logging.WARNING, format="%(message)s") parser = makeParser() args = parser.parse_args() - # Adjust level based on flags - if args.debug: - logging.getLogger().setLevel(logging.DEBUG) - elif args.verbose: - logging.getLogger().setLevel(logging.INFO) + # Adjust log level based on flags + setLogLevel(args) + + # Try to load argcomplete + tryLoadArgcomplete(parser) - # try to obtain profile directory + # Try to obtain profile directory if args.directory is None: try: args.directory = guessDir() @@ -603,7 +613,7 @@ def main(): parser.exit() args.directory = args.directory.expanduser() - # run arg parser + # Run arg parser try: # Wrap in try/except for BrokenPipeError to allow piping to head, i.e., ffpass export | head -5 try: diff --git a/requirements.txt b/requirements.txt index 5f86850..9a633f2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ -pyasn1==0.6.1 -pycryptodome==3.23.0 +argcomplete>=3.5.2 +pyasn1~=0.6.1 +pycryptodome~=3.23.0 -- 2.52.0