cmd/gitcheckup.py
2020-01-11 01:44:20 -08:00

67 lines
1.9 KiB
Python

import sys
import subprocess
import os
from voussoirkit import winwhich
GIT = winwhich.which('git')
DIRECTORIES = [
r'D:\Git\cmd',
r'D:\Git\epubfile',
r'D:\Git\Etiquette',
r'D:\Git\reddit',
r'D:\Git\reddit\Timesearch',
r'D:\Git\sigilplugins',
r'D:\Git\voussoirkit',
r'D:\Git\YCDL',
]
def checkup(directory):
os.chdir(directory)
command = [GIT, 'status']
output = subprocess.check_output(command, stderr=subprocess.STDOUT)
if b'nothing to commit' in output:
committed = True
details = ''
else:
modified = output.count(b'modified:')
deleted = output.count(b'deleted:')
if b'Untracked files' in output:
added = output.split(b'in what will be committed)')[1]
added = added.split(b'no changes added to commit')[0]
added = added.split(b'nothing added to commit but')[0]
added = [x.strip() for x in added.splitlines()]
added = [x for x in added if x]
added = len(added)
else:
added = 0
committed = False
details = f'(+{added}, -{deleted}, ~{modified})'
command = [GIT, 'log', '-1', '--decorate']
output = subprocess.check_output(command, stderr=subprocess.STDOUT)
headline = output.splitlines()[0]
locations = headline.split(b'(')[-1].split(b')')[0]
if b',' in locations:
pushed = True
else:
pushed = False
return {'committed': committed, 'pushed': pushed, 'details': details}
def checkup_all():
print('[C][P]')
for directory in DIRECTORIES:
result = checkup(directory)
committed = 'x' if result['committed'] else ' '
pushed = 'x' if result['pushed'] else ' '
details = (' ' + result['details']) if result['details'] else ''
print(f'[{committed}][{pushed}] {directory}{details}')
def main(argv):
checkup_all()
if __name__ == '__main__':
raise SystemExit(main(sys.argv[1:]))