diff --git a/git-status-all b/git-status-all index e8a1c21..ca8ac7a 100755 --- a/git-status-all +++ b/git-status-all @@ -11,6 +11,8 @@ import os import re import subprocess +import click + # TODO config file (and defaults here) IGNORES = [ @@ -36,19 +38,31 @@ def working_directory(directory: Path): os.chdir(saved_cwd) -for git_directory in git_directories('.'): - # technically,we could have a different GIT_DIR than ".git", but this script - # assumes ".git". - if git_directory.parts[-1] != ".git": - continue - work_tree_directory = git_directory.parent - - with working_directory(work_tree_directory): - try: - out = subprocess.check_output(['git', 'status', '-s'], stderr=subprocess.STDOUT) - if len(out) > 0: - print('== {}\n{}'.format(work_tree_directory, out.decode('utf-8'))) - except subprocess.CalledProcessError as e: - print((Fore.RED + 'git status is unhappy with {}' + Fore.RESET) - .format(work_tree_directory)) - print(e.output) +@click.command +@click.argument('topdirs', nargs=-1) +def search_dirty(topdirs): + """Search for dirty git working directories in TOPDIRS""" + if len(topdirs) == 0: + topdirs = ["."] + + for topdir in topdirs: + for git_directory in git_directories(topdir): + # technically,we could have a different GIT_DIR than ".git", but this script + # assumes ".git". + if git_directory.parts[-1] != ".git": + continue + work_tree_directory = git_directory.parent + + with working_directory(work_tree_directory): + try: + out = subprocess.check_output(['git', 'status', '-s'], stderr=subprocess.STDOUT) + if len(out) > 0: + print('== {}\n{}'.format(work_tree_directory, out.decode('utf-8'))) + except subprocess.CalledProcessError as e: + print((Fore.RED + 'git status is unhappy with {}' + Fore.RESET) + .format(work_tree_directory)) + print(e.output) + + +if __name__ == '__main__': + search_dirty()