From a295c5c0c69477fc5cb61b3465bd04e9b570137b Mon Sep 17 00:00:00 2001 From: neingeist Date: Mon, 9 Jan 2023 23:28:42 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20git-status-all:=20get=20working?= =?UTF-8?q?=20tree=20directory=20via=20pathlib?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- git-status-all | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/git-status-all b/git-status-all index f863d22..fc17fd2 100755 --- a/git-status-all +++ b/git-status-all @@ -4,13 +4,14 @@ from __future__ import division, print_function from colorama import Fore +from pathlib import Path import contextlib import os import subprocess -def git_directories(startdir): +def git_directories(startdir) -> Path: for dirpath, dirnames, _ in os.walk(startdir): if '.sync' in dirpath: continue @@ -18,11 +19,11 @@ def git_directories(startdir): # FIXME continue if set(['info', 'objects', 'refs']).issubset(set(dirnames)): - yield dirpath + yield Path(dirpath) @contextlib.contextmanager -def working_directory(directory): +def working_directory(directory: Path): saved_cwd = os.getcwd() os.chdir(directory) yield @@ -30,7 +31,12 @@ def working_directory(directory): for git_directory in git_directories('.'): - work_tree_directory = git_directory[:-4] + # 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)