Library for managing git hooks
Library for managing and writing git hooks in Python
But either they need another interpreter besides python (like husky) or they are too ambiguous (like pre-commit). pre-commit is written in python but has support hooks written in all kind of languages. Also it maintains the dependencies by itself and doesn't install in the current environment.
Autohooks is a pure python library that installs a minimal executable git hook. If autohooks isn't installed in your current python path the hooks aren't executed. So autohooks is always opt-in by installing the package into your current development environment. It would be even possible to run different versions of autohooks by switching the environment.
For the installation of autohooks three steps are necessary:
- Install the autohooks package into your current environment
- Activate the git hooks
- Configure the plugins to be run
Install autohooks python package
For installing the autohooks python package, using pipenv is highly recommended.
To install autohooks as a development dependency run
pipenv install --dev autohooks
Alternatively autohooks can be installed directly from GitHub
pipenv install --dev -e git+https://github.com/bjoernricks/autohooks#egg=autohooks
Activating the git hooks
If autohooks is installed from git or a source tarball, the git hooks should be
activated automatically. The activation can be verified by running e.g.
Installing autohooks from a wheel package will NOT activate the git commit hooks.
To manually activate the git hooks you can run
pipenv run autohooks activate
Configure plugins to be run
To actually run an action on git hooks, autohooks plugins have to be configured. Autohooks uses the pyproject.toml file specified in PEP518 for its configuration. Adding a [tool.autohooks] section allows to set python modules to be run on a specific git hook.
[build-system] requires = ["setuptools", "wheel"] [tool.autohooks] pre-commit = ["autohooks.plugins.black"]
This project is maintained by Greenbone Networks GmbH.
Copyright (C) 2019 Greenbone Networks GmbH
Licensed under the GNU General Public License v3.0 or later.