49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
from subprocess import Popen, PIPE
|
|
import sys
|
|
|
|
GIT_BIN = sys.argv[1]
|
|
STATUS_CMD = "{} status -sb".format(GIT_BIN)
|
|
|
|
def main():
|
|
proc = Popen(STATUS_CMD, shell=True, stdout=PIPE, bufsize=100, env={"LC_ALL": "C"})
|
|
|
|
if (proc.wait() != 0):
|
|
sys.exit(2)
|
|
|
|
line = proc.stdout.readline()
|
|
i_open = line.find(b"[")
|
|
i_close = line.find(b"]")
|
|
|
|
if (i_open == -1):
|
|
print("nil")
|
|
sys.exit(0)
|
|
|
|
ahead = 0
|
|
ahead_len = 0
|
|
behind = 0
|
|
behind_len = 0
|
|
|
|
for inf in line[i_open+1 : i_close].split(b", "):
|
|
split = inf.split(b" ")
|
|
status = split[0]
|
|
text = split[1]
|
|
number = int(text)
|
|
if status == b"ahead":
|
|
ahead = number
|
|
ahead_len = len(text)
|
|
elif status == b"behind":
|
|
behind = number
|
|
behind_len = len(text)
|
|
|
|
if ahead == 0 and behind != 0:
|
|
face_len = 2 + behind_len
|
|
print('#(" ↓{}" 0 {} (face treemacs-git-commit-diff-face))'.format(behind, face_len))
|
|
elif ahead != 0 and behind == 0:
|
|
face_len = 2 + ahead_len
|
|
print('#(" ↑{}" 0 {} (face treemacs-git-commit-diff-face))'.format(ahead, face_len))
|
|
else:
|
|
face_len = 4 + ahead_len + behind_len
|
|
print('#(" ↑{} ↓{}" 0 {} (face treemacs-git-commit-diff-face))'.format(ahead, behind, face_len))
|
|
|
|
main()
|