提交 7a546362 编写于 作者: C Chris Jones

Much needed PEP8 love. Use spaces, not tabs.

上级 598a9c6f
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: UTF-8 -*- # -*- coding: UTF-8 -*-
from subprocess import Popen, PIPE
import re
# change those symbols to whatever you prefer # change those symbols to whatever you prefer
symbols = {'ahead of': '↑', 'behind': '↓', 'staged':'♦', 'changed':'‣', 'untracked':'…', 'clean':'⚡', 'unmerged':'≠', 'sha1':':'} symbols = {
'ahead of': '↑',
from subprocess import Popen, PIPE 'behind': '↓',
'staged': '♦',
'changed': '‣',
'untracked': '…',
'clean': '⚡',
'unmerged': '≠',
'sha1': ':'
}
output,error = Popen(['git','status'], stdout=PIPE, stderr=PIPE).communicate() output, error = Popen(
['git', 'status'], stdout=PIPE, stderr=PIPE).communicate()
if error: if error:
import sys import sys
sys.exit(0) sys.exit(0)
lines = output.splitlines() lines = output.splitlines()
import re behead_re = re.compile(
behead_re = re.compile(r"^# Your branch is (ahead of|behind) '(.*)' by (\d+) commit") r"^# Your branch is (ahead of|behind) '(.*)' by (\d+) commit")
diverge_re = re.compile(r"^# and have (\d+) and (\d+) different") diverge_re = re.compile(r"^# and have (\d+) and (\d+) different")
status = '' status = ''
...@@ -23,46 +33,50 @@ changed = re.compile(r'^# Changed but not updated:$', re.MULTILINE) ...@@ -23,46 +33,50 @@ changed = re.compile(r'^# Changed but not updated:$', re.MULTILINE)
untracked = re.compile(r'^# Untracked files:$', re.MULTILINE) untracked = re.compile(r'^# Untracked files:$', re.MULTILINE)
unmerged = re.compile(r'^# Unmerged paths:$', re.MULTILINE) unmerged = re.compile(r'^# Unmerged paths:$', re.MULTILINE)
def execute(*command): def execute(*command):
out, err = Popen(stdout=PIPE, stderr=PIPE, *command).communicate() out, err = Popen(stdout=PIPE, stderr=PIPE, *command).communicate()
if not err: if not err:
nb = len(out.splitlines()) nb = len(out.splitlines())
else: else:
nb = '?' nb = '?'
return nb return nb
if staged.search(output): if staged.search(output):
nb = execute(['git','diff','--staged','--name-only','--diff-filter=ACDMRT']) nb = execute(
status += '%s%s' % (symbols['staged'], nb) ['git', 'diff', '--staged', '--name-only', '--diff-filter=ACDMRT'])
status += '%s%s' % (symbols['staged'], nb)
if unmerged.search(output): if unmerged.search(output):
nb = execute(['git','diff', '--staged','--name-only', '--diff-filter=U']) nb = execute(['git', 'diff', '--staged', '--name-only', '--diff-filter=U'])
status += '%s%s' % (symbols['unmerged'], nb) status += '%s%s' % (symbols['unmerged'], nb)
if changed.search(output): if changed.search(output):
nb = execute(['git','diff','--name-only', '--diff-filter=ACDMRT']) nb = execute(['git', 'diff', '--name-only', '--diff-filter=ACDMRT'])
status += '%s%s' % (symbols['changed'], nb) status += '%s%s' % (symbols['changed'], nb)
if untracked.search(output): if untracked.search(output):
## nb = len(Popen(['git','ls-files','--others','--exclude-standard'],stdout=PIPE).communicate()[0].splitlines()) status += symbols['untracked']
## status += "%s" % (symbols['untracked']*(nb//3 + 1), )
status += symbols['untracked']
if status == '': if status == '':
status = symbols['clean'] status = symbols['clean']
remote = '' remote = ''
bline = lines[0] bline = lines[0]
if bline.find('Not currently on any branch') != -1: if bline.find('Not currently on any branch') != -1:
branch = symbols['sha1']+ Popen(['git','rev-parse','--short','HEAD'], stdout=PIPE).communicate()[0][:-1] branch = symbols['sha1'] + Popen([
'git',
'rev-parse',
'--short',
'HEAD'], stdout=PIPE).communicate()[0][:-1]
else: else:
branch = bline.split(' ')[3] branch = bline.split(' ')[3]
bstatusline = lines[1] bstatusline = lines[1]
match = behead_re.match(bstatusline) match = behead_re.match(bstatusline)
if match: if match:
remote = symbols[match.groups()[0]] remote = symbols[match.groups()[0]]
remote += match.groups()[2] remote += match.groups()[2]
elif lines[2:]: elif lines[2:]:
div_match = diverge_re.match(lines[2]) div_match = diverge_re.match(lines[2])
if div_match: if div_match:
remote = "{behind}{1}{ahead of}{0}".format(*div_match.groups(), **symbols) remote = "{behind}{1}{ahead of}{0}".format(
*div_match.groups(), **symbols)
print '\n'.join([branch,remote,status])
print('\n'.join([branch, remote, status]))
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册