From 82653c3db15de27cf117187f3732ebb02cb0f168 Mon Sep 17 00:00:00 2001 From: sij <sij@sij.law> Date: Fri, 17 Jan 2025 22:17:30 +0000 Subject: [PATCH] Update deps --- deps | 53 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/deps b/deps index fdb76d8..2d7732a 100755 --- a/deps +++ b/deps @@ -65,8 +65,7 @@ def which(cmd): """ Check if `cmd` is on PATH. Returns True if found, else False. """ - paths = os.environ["PATH"].split(os.pathsep) - for pth in paths: + for pth in os.environ["PATH"].split(os.pathsep): cmd_path = os.path.join(pth, cmd) if os.path.isfile(cmd_path) and os.access(cmd_path, os.X_OK): return True @@ -315,14 +314,12 @@ def subcmd_install(args): # Subcommand: ls ############################ -def subcmd_ls(args): - parser = argparse.ArgumentParser(prog='deps ls', description="List Python imports in a file/folder.") - parser.add_argument('-r', '--recurse', action='store_true', help='Recurse into subfolders.') - parser.add_argument('path', nargs='?', default='.', help='File or directory to scan. Default is current directory.') - - known_args = parser.parse_args(args) - path = known_args.path - recurse = known_args.recurse +def subcmd_ls(parsed_args): + """ + Called with the top-level parser's result. + """ + path = parsed_args.path + recurse = parsed_args.recurse imports = find_imports_in_path(path, recurse=recurse) if imports: @@ -341,27 +338,45 @@ def main(): subparsers = parser.add_subparsers(dest='subcommand', required=True) # Subcommand: install - install_parser = subparsers.add_parser('install', - help="Install packages or dependencies from .py files / current folder / subfolders.") - install_parser.add_argument('args', nargs=argparse.REMAINDER, + install_parser = subparsers.add_parser( + 'install', + help="Install packages or dependencies from .py files / current folder / subfolders." + ) + install_parser.add_argument( + 'args', + nargs=argparse.REMAINDER, help=( "If empty, scans current dir. If '-r' only, scans recursively. " "Otherwise, pass script names, package names, or '-r <file>'. " "Use --no-conda to skip mamba/conda usage." - )) + ) + ) # Subcommand: ls - ls_parser = subparsers.add_parser('ls', - help="List imports in a file/folder. Use '-r' to recurse.") - ls_parser.add_argument('ls_args', nargs=argparse.REMAINDER, - help="Add '-r' plus optional path to scan. E.g. `deps ls -r src`.") + ls_parser = subparsers.add_parser( + 'ls', + help="List imports in a file/folder. Use '-r' to recurse." + ) + ls_parser.add_argument( + '-r', '--recurse', + action='store_true', + help='Recurse into subfolders.' + ) + ls_parser.add_argument( + 'path', + nargs='?', + default='.', + help='File or directory to scan (default is current directory).' + ) parsed_args = parser.parse_args() if parsed_args.subcommand == 'install': + # We manually parse the remainder ourselves in subcmd_install + # so we pass them as is subcmd_install(parsed_args.args) elif parsed_args.subcommand == 'ls': - subcmd_ls(parsed_args.ls_args) + subcmd_ls(parsed_args) if __name__ == "__main__": main()