#!/home/dirk/bin/venv/bin/python # -*- coding: UTF-8 -*- import optparse import os repolist = [] def findrepos(p, **kwargs): depth = kwargs.get('depth', 0) max_depth = kwargs.get('max_depth') ld = os.listdir(p) if '.git' in ld: if os.path.isdir(os.path.join(p, '.git')): repolist.append(p) return else: for entry in ld: np = os.path.join(p, entry) if os.path.isdir(np): findrepos(np, depth=depth+1, max_depth=max_depth) if __name__ == "__main__": parser = optparse.OptionParser("usage: %%prog target_path [opions]") parser.add_option("-d", "--depth", dest="depth", default=None, type="int", help="Folder depth to search for a repo") parser.add_option("-p", "--human-readable", dest="human_readable", action="store_true", default=False, help="Print a human readable list") (options, args) = parser.parse_args() if len(args) != 1: parser.print_help() else: findrepos(args[0]) repolist.sort() if options.human_readable: print('- ' + '\n- '.join(repolist), '\n') else: print(' '.join(repolist))