Source code for medikit.feature.git
"""
Git version control system support.
"""
import os
import medikit
from medikit.events import subscribe
from medikit.feature import ABSOLUTE_PRIORITY, Feature
[docs]class GitConfig(Feature.Config):
def __init__(self):
self._enabled = True
@property
def enabled(self):
return self._enabled
[docs] def disable(self):
self._enabled = False
[docs] def enable(self):
self._enabled = True
[docs]class GitFeature(Feature):
Config = GitConfig
[docs] @subscribe(medikit.on_start, priority=ABSOLUTE_PRIORITY)
def on_start(self, event):
if not event.config["git"].enabled:
return
if not os.path.exists(".git"):
self.dispatcher.info("git", "Creating git repository...")
os.system("git init --quiet")
os.system("git add Projectfile")
os.system('git commit --quiet -m "Project initialized using Medikit."')
def on_file_change(event):
os.system("git add {}".format(event.filename))
self.dispatcher.add_listener("medikit.on_file_closed", on_file_change, priority=-1)
[docs] @subscribe(medikit.on_end)
def on_end(self, event):
self.render_file_inline(
".gitignore",
"""
*.egg-info
*.iml
*.pyc
*.swp
/.cache
/.coverage
/.idea
/.python*-*
/build
/dist
/htmlcov
/pylint.html
""",
event.variables,
)
[docs] @subscribe("medikit.feature.make.on_generate", priority=ABSOLUTE_PRIORITY + 1)
def on_make_generate(self, event):
event.makefile["VERSION"] = "$(shell git describe 2>/dev/null || git rev-parse --short HEAD)"