1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- 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()
|