Python Scripts

list_all_git_repos

Download File

from pathlib import Path
import os
from ctypes import windll
import string
from typing import Generator


def get_all_drives_non_psutil() -> tuple[Path]:
    drives = []
    bitmask = windll.kernel32.GetLogicalDrives()
    for letter in string.ascii_uppercase:
        if bitmask & 1:
            drives.append(Path(f"{letter}:\\ ").resolve())
        bitmask >>= 1

    return tuple(drives)


def iter_all_git_folder(in_drive: Path) -> Generator[Path, None, None]:
    recycle_bin_name = "$Recycle.Bin".casefold()

    for dirname, folderlist, filelist in os.walk(in_drive, True):

        if ".git" in folderlist and not dirname.casefold().endswith(recycle_bin_name):
            yield Path(dirname)
            folderlist.clear()
            filelist.clear()


if __name__ == '__main__':
    for drive in get_all_drives_non_psutil():

        for git_folder in iter_all_git_folder(drive):
            print(git_folder, flush=True)

            print("", flush=True)