import re import sh from yird.settings import Settings class GitService: git = sh.git.bake(_cwd=Settings().YIRD_PATH) @classmethod def get_status(cls): files = [] initialized = False try: status = cls.git.status("-s", "-uall").strip() for line in status.split("\n"): if line[0:9] == "\x1b[31mM\x1b[m": files.append({ "filename": line[10:], "status": "modified" }) elif line[0:9] == "\x1b[32mM\x1b[m": files.append({ "filename": line[10:], "status": "added and modified" }) elif line[0:10] == "\x1b[31m??\x1b[m": files.append({ "filename": line[11:], "status": "untracked" }) initialized = True except sh.ErrorReturnCode_128 as e: if re.search('not a git repository', str(e)): initialized = False return { "git": { "initialized": initialized, "file_statuses": files } } @classmethod def init(cls): cls.git.init()