mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-02-17 00:04:42 +04:00
added install and uninstall hooks
This commit is contained in:
parent
9914255ffa
commit
7e74821a5d
7 changed files with 79 additions and 19 deletions
|
|
@ -79,11 +79,6 @@ TESTS = [
|
|||
"All - No tabs",
|
||||
True, 'testtabs',
|
||||
),
|
||||
Test(
|
||||
"make test",
|
||||
"Py - Tests",
|
||||
False, 'testtests',
|
||||
),
|
||||
]
|
||||
|
||||
def get_git_config(config_name):
|
||||
|
|
|
|||
27
pre_commit/git.py
Normal file
27
pre_commit/git.py
Normal 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()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
3
pre_commit/resources/pre-commit.sh
Executable file
3
pre_commit/resources/pre-commit.sh
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
pre-commit
|
||||
|
|
@ -1,11 +1,10 @@
|
|||
|
||||
import argparse
|
||||
|
||||
from pre_commit import git
|
||||
|
||||
def install():
|
||||
"""Install the pre-commit hook."""
|
||||
raise NotImplementedError
|
||||
|
||||
git.create_pre_commit()
|
||||
|
||||
def uninstall():
|
||||
"""Uninstall the pre-commit hook."""
|
||||
|
|
|
|||
|
|
@ -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:]))
|
||||
8
setup.py
8
setup.py
|
|
@ -5,12 +5,14 @@ setup(
|
|||
name='pre_commit',
|
||||
version='0.0.0',
|
||||
packages=find_packages('.', exclude=('tests*', 'testing*')),
|
||||
package_data={
|
||||
'pre_commit': [
|
||||
'resources/pre-commit.sh'
|
||||
]
|
||||
},
|
||||
install_requires=[
|
||||
'argparse',
|
||||
'plumbum',
|
||||
'simplejson',
|
||||
],
|
||||
scripts=[
|
||||
'scripts/pre-commit.py',
|
||||
],
|
||||
)
|
||||
|
|
|
|||
42
tests/git_test.py
Normal file
42
tests/git_test.py
Normal 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())
|
||||
Loading…
Add table
Add a link
Reference in a new issue