• Stars
    star
    187
  • Rank 206,464 (Top 5 %)
  • Language
    Python
  • License
    GNU General Publi...
  • Created almost 6 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Library for managing git hooks

Greenbone Logo

Autohooks

PyPI release Build and test Python package codecov

Library for managing and writing git hooks in Python using pyproject.toml for its settings.

Looking for automatic formatting and linting, e.g., with black and pylint, while creating a git commit using a pure Python implementation? Do you just want to have your git hook settings in the pyproject.toml file too?

Welcome to autohooks!

Why?

Several outstanding libraries for managing and executing git hooks exist already. To name a few: husky, lint-staged, precise-commits or pre-commit.

However, they need another interpreter besides python (like husky), require a different config file besides pyproject.toml or are too ambiguous (like pre-commit). pre-commit is written in python but has support hooks written in all kind of languages. Additionally, it maintains the dependencies by itself and does not install them in the current environment.

Solution

autohooks is a pure python library that installs a minimal executable git hook. It allows the decision of how to maintain the hook dependencies by supporting different modes and stores its settings in the well known pyproject.toml file.

Autohooks

Requirements

Python 3.8+ is required for autohooks.

Plugins

  • Python code formatting via black

  • Python code formatting via autopep8

  • Python code linting via pylint

  • Python code linting via flake8

  • Python code linting via ruff

  • Python code linting via mypy

  • Python import sorting via isort

  • Running tests via pytest

Installing autohooks

Quick installation of pylint and black plugins using poetry:

poetry add --dev autohooks autohooks-plugin-black autohooks-plugin-pylint
poetry run autohooks activate --mode poetry
poetry run autohooks plugins add autohooks.plugins.black autohooks.plugins.pylint

The output of autohooks activate should be similar to

 βœ“ autohooks pre-commit hook installed at /autohooks-test/.git/hooks/pre-commit using poetry mode.

Autohooks has an extensible plugin model. Each plugin provides different functionality which often requires to install additional dependencies.

For managing these dependencies currently three modes are supported by autohooks:

  • pythonpath for dependency management via pip
  • poetry for dependency management via poetry (recommended)
  • pipenv for dependency management via pipenv

These modes handle how autohooks, the plugins and their dependencies are loaded during git hook execution.

If no mode is specified in the pyproject.toml config file and no mode is set during activation, autohooks will use the pythonpath mode by default.

For more details on using pip, poetry or pipenv in conjunction with these modes see the documentation.

Maintainer

This project is maintained by Greenbone AG.

Contributing

Your contributions are highly appreciated. Please create a pull request on GitHub. Bigger changes need to be discussed with the development team via the issues section at GitHub first.

License

Copyright (C) 2019 - 2023 Greenbone AG

Licensed under the GNU General Public License v3.0 or later.

More Repositories

1

openvas-scanner

This repository contains the scanner component for Greenbone Community Edition.
Rust
3,228
star
2

gvmd

Greenbone Vulnerability Manager - The database backend for the Greenbone Community Edition
C
280
star
3

gsa

Greenbone Security Assistant - The web frontend for the Greenbone Community Edition
JavaScript
212
star
4

gvm-tools

Remote control your Greenbone Community Edition or Greenbone Enterprise Appliance
Python
161
star
5

python-gvm

Greenbone Vulnerability Management Python Library
Python
106
star
6

gvm-libs

Greenbone Vulnerability Management Libraries
C
83
star
7

ospd-openvas

ospd-openvas is an OSP server implementation to allow GVM to remotely control an OpenVAS Scanner
Python
66
star
8

openvas-smb

SMB module for OpenVAS Scanner
C
47
star
9

notus-scanner

Notus is a vulnerability scanner for creating results from local security checks
Python
40
star
10

ospd

OSPd is a framework for vulnerability scanners which share the same communication protocol: OSP (Open Scanner Protocol)
Python
30
star
11

docs

Documentation for the Greenbone Community Edition
Shell
22
star
12

gsad

Greenbone Security Assistant HTTP Server - The server talking to the Greenbone Vulnerability Management daemon (gvmd).
C
10
star
13

pheme

pheme is a service to create scan reports
Python
9
star
14

pontos

Common utilities and tools maintained by Greenbone Networks
Python
9
star
15

greenbone-feed-sync

New script for downloading the Greenbone Community Feed
Python
8
star
16

pg-gvm

Greenbone Library for helper functions in PostgreSQL
CMake
7
star
17

actions

GitHub Actions for Greenbone projects
Python
7
star
18

greenbone-container-images

Additional Container Images from Greenbone
Dockerfile
6
star
19

troubadix

A linting tool for NASL files
Python
6
star
20

hyperion

Abandoned. This repository is not used anymore.
Python
6
star
21

.github

Default GitHub files for Greenbone Projects
5
star
22

autohooks-plugin-black

An autohooks plugin for python code formatting via black
Python
5
star
23

ospd-debsecan

OSP server implementation to allow GVM to remotely control a debsecan scanner
Python
5
star
24

ospd-example-scanner

Example ospd based scanner
Python
4
star
25

boreas

Boreas a command line tool to scan for alive hosts
CMake
4
star
26

ospd-ikescan

ospd-ikescan is a OSP server implementation to allow GVM to remotely control a ike-scan scanner
Python
4
star
27

ospd-nmap-nse

ospd-nmap-nse is an OSP server implementation to allow GVM to remotely control the nmap port scanner
Python
4
star
28

ospd-ikeprobe

ospd-ikeprobe is a OSP server implementation to allow GVM to remotely control a ikeprobe scanner
Python
3
star
29

autohooks-plugin-pylint

Autohooks plugin for code linting via pylint
Python
3
star
30

ospd-netstat

ospd-netstat is a OSP server implementation to allow GVM to remotely control the netstat tool
Python
3
star
31

ui-components

React Components
TypeScript
3
star
32

go-project-template

Go Project Template
Go
3
star
33

templates

Greenbone Templates for repositories on GitHub
3
star
34

ospd-nmap

ospd-nmap is a OSP server implementation to allow GVM to remotely control the nmap port scanner
Python
3
star
35

keycloak-client-golang

Reusable keycloak client for golang
Go
3
star
36

autohooks-plugin-isort

An autohooks plugin for Python include sorting with isort
Python
3
star
37

vt-test-environments

Environments for VT testing
Dockerfile
3
star
38

scanner-api

API for the scanner
HTML
3
star
39

ospd-ssh-keyscan

ospd-ssh-keyscan is a OSP server implementation to allow GVM to remotely control the ssh-keyscan tool of OpenSSH
Python
2
star
40

autohooks-plugin-flake8

Autohooks plugin for flake8
Python
2
star
41

autohooks-plugin-pytest

Python
2
star
42

python-project-template

Python Project Template
Python
2
star
43

greenbone.github.io

Pages
HTML
1
star
44

opensight-golang-libraries

A collection of reusable Golang code to provide functionality to OpenSight backend services
Go
1
star
45

exercise-admin-notification

An example REST service as end point for an application execise
Go
1
star