bumblebee-status/bumblebee/modules/git.py
Tobias Witek 212966945c [modules/git] Fix recursion error
Endless loop caused by stupid bug when trying to find the root git
repository.
2019-01-20 14:17:10 +01:00

51 lines
1.4 KiB
Python

# pylint: disable=C0111,R0903
"""Print the branch and git status for the
currently focused window.
Requires:
* xcwd
* Python module 'pygit2'
"""
import os
import string
import pygit2
import bumblebee.input
import bumblebee.output
import bumblebee.engine
import bumblebee.util
class Module(bumblebee.engine.Module):
def __init__(self, engine, config):
super(Module, self).__init__(engine, config,
bumblebee.output.Widget(full_text=self.gitinfo)
)
self._fmt = self.parameter("format", "{branch} - {directory}")
def gitinfo(self, widget):
info = ""
directory = None
data = {
"branch": "n/a",
}
try:
directory = bumblebee.util.execute("xcwd").strip()
directory = self._get_git_root(directory)
repo = pygit2.Repository(directory)
data["branch"] = repo.head.shorthand
data["directory"] = directory
except Exception as e:
return e
return string.Formatter().vformat(self._fmt, (), data)
def _get_git_root(self, directory):
while len(directory) > 1:
if os.path.exists(os.path.join(directory, ".git")):
return directory
directory = "/".join(directory.split("/")[0:-1])
return "/"
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4