added install and uninstall hooks

This commit is contained in:
Ken Struys 2014-03-13 13:59:05 -07:00
parent 9914255ffa
commit 7e74821a5d
7 changed files with 79 additions and 19 deletions

View file

@ -79,11 +79,6 @@ TESTS = [
"All - No tabs", "All - No tabs",
True, 'testtabs', True, 'testtabs',
), ),
Test(
"make test",
"Py - Tests",
False, 'testtests',
),
] ]
def get_git_config(config_name): def get_git_config(config_name):

27
pre_commit/git.py Normal file
View file

@ -0,0 +1,27 @@
import os
import pkg_resources
from plumbum import local
def get_root():
return local['git']['rev-parse', '--show-toplevel']().strip()
def get_pre_commit_path():
return os.path.join(get_root(), '.git/hooks/pre-commit')
def create_pre_commit():
path = get_pre_commit_path()
pre_commit_file = pkg_resources.resource_filename('pre_commit', 'resources/pre-commit.sh')
local.path(path).write(local.path(pre_commit_file).read())
def remove_pre_commit():
local.path(get_pre_commit_path()).delete()

View file

@ -0,0 +1,3 @@
#!/usr/bin/env bash
pre-commit

View file

@ -1,11 +1,10 @@
import argparse import argparse
from pre_commit import git
def install(): def install():
"""Install the pre-commit hook.""" """Install the pre-commit hook."""
raise NotImplementedError git.create_pre_commit()
def uninstall(): def uninstall():
"""Uninstall the pre-commit hook.""" """Uninstall the pre-commit hook."""

View file

@ -1,8 +0,0 @@
#!/usr/bin/env python
if __name__ == '__main__':
import sys
from pre_commit.run import run
sys.exit(run(sys.argv[1:]))

View file

@ -5,12 +5,14 @@ setup(
name='pre_commit', name='pre_commit',
version='0.0.0', version='0.0.0',
packages=find_packages('.', exclude=('tests*', 'testing*')), packages=find_packages('.', exclude=('tests*', 'testing*')),
package_data={
'pre_commit': [
'resources/pre-commit.sh'
]
},
install_requires=[ install_requires=[
'argparse', 'argparse',
'plumbum', 'plumbum',
'simplejson', 'simplejson',
], ],
scripts=[
'scripts/pre-commit.py',
],
) )

42
tests/git_test.py Normal file
View file

@ -0,0 +1,42 @@
import os
import pytest
from plumbum import local
from pre_commit import git
@pytest.fixture
def empty_git_dir(tmpdir):
local.cwd.chdir(tmpdir.strpath)
local['git']['init']()
return tmpdir.strpath
def test_get_root(empty_git_dir):
assert git.get_root() == empty_git_dir
foo = local.path('foo')
foo.mkdir()
local.cwd.chdir(foo)
assert git.get_root() == empty_git_dir
def test_get_pre_commit_path(empty_git_dir):
assert git.get_pre_commit_path() == '{0}/.git/hooks/pre-commit'.format(empty_git_dir)
def test_create_pre_commit(empty_git_dir):
git.create_pre_commit()
assert len(open(git.get_pre_commit_path(), 'r').read()) > 0
def test_remove_pre_commit(empty_git_dir):
git.remove_pre_commit()
assert not os.path.exists(git.get_pre_commit_path())
git.create_pre_commit()
git.remove_pre_commit()
assert not os.path.exists(git.get_pre_commit_path())