hooks-vb 0.0.6
Pre-commit app hooks.
License: Apache-2.0
Requires Python: >=3.6
Keywords: pre-commit,git,hooks

.. image:: https://codecov.io/gh/violet-black/hooks-vb/branch/master/graph/badge.svg?token=M1Q40R4VX8
    :target: https://codecov.io/gh/violet-black/hooks-vb
    :alt: Coverage status

.. image:: https://badge.fury.io/py/hooks-vb.svg
    :target: https://badge.fury.io/py/hooks-vb
    :alt: Latest package version

.. image:: https://github.com/violet-black/hooks-vb/actions/workflows/pre-commit.yml/badge.svg
    :target: https://github.com/violet-black/hooks-vb/actions/workflows/pre-commit.yml
    :alt: CI status

.. image:: https://github.com/violet-black/hooks-vb/actions/workflows/python-publish.yml/badge.svg
    :target: https://github.com/violet-black/hooks-vb/actions/workflows/python-publish.yml
    :alt: Build status

.. image:: https://readthedocs.org/projects/hooks-vb/badge/?version=latest
    :target: https://hooks-vb.readthedocs.io/en/latest/?badge=latest
    :alt: Documentation status

.. image:: https://gitlab.com/antonnidhoggr/hooks-vb/badges/master/pipeline.svg
    :target: https://gitlab.com/antonnidhoggr/hooks-vb/-/pipelines/latest
    :alt: CI status

Some useful (more or less) git hooks.

Hooks
-----

check-commit-msg
^^^^^^^^^^^^^^^^

It provides a simple regex check on commit message.

Supported message header formats:

.. code-block::

  [type]: [description]
  [type]([context]): [description]
  [type] #[issue_id]: [description]
  [type]([context]) #[issue_id]: [description]

Supported message format (if you need a longer commit message):

.. code-block::

  [header]

  [message]


Here `type` is a specific commit type tag. Recognized types are:

.. code-block::

    'fix',                      # bugfix
    'feat', 'feature',          # feature
    'wip',                      # work-in-progress changes (not ready to use)
    'maint', 'maintenance',     # code maintenance (dependences, configs)
    'backport',                 # backport to an older branch
    'test', 'tests',            # code test related
    'doc', 'docs',              # documentation related
    'style'                     # code style and minor refactoring

The `context` keyword is optional. It must be in round brackets if present.
You may provide a module name or a service name or any project-specific
information to localize the scope of a problem.

The `issue_id` must be prepended with `#` if present and it should match
an bug report / feature request ID connected to this specific commit.

The `description` is just a short description of your commit. The maximum length
of a description part of a header is 60 symbols.

You also can provide any additional information after the header.

Here are some examples:

.. code-block::

  fix: fixed possible connection drops in db


  feat(cache): added multi-value caching


  feature(db) #112: support for sqlalchemy v.2

  Added sqlalchemy v.2 support in database services
  incl. new table init engine and other bla-bla-bla...
  <write text here>


Usage
_____

Add it to your `.pre-commit-config.yaml` for `pre-commit <https://pre-commit.com>`_:

.. code-block::

  - repo: https://github.com/violet-black/hooks-vb
    rev: 0.0.2
    hooks:
      - id: check-commit-msg


Also you can install the package via pip and run the hook from the CLI:

.. code-block::

  pip install hooks-vb
  check-commit-msg my_project_dir


Options
_______

- `--msg-fmt` - different regex format
- `--categories` - different list of type tags


add-version-tag
^^^^^^^^^^^^^^^

It automatically adds a version tag to a commit if
the `__version__` variable in `__init__.py`
has changed and if there's no such version tag exists in repo.
Version tags are checked against `PEP440 <https://www.python.org/dev/peps/pep-0440>`_

Examples:

.. code-block::

  1.0.0
  1.2
  1.1rc2


Usage
_____

Add it to your `.pre-commit-config.yaml` for `pre-commit <https://pre-commit.com>`_:

.. code-block::

  - repo: https://github.com/violet-black/hooks-vb
    rev: 0.0.2
    hooks:
      - id: add-version-tag
        args: [ 'my_package' ]


Also you can install the package via pip and run the hook from the CLI:

.. code-block::

  pip install hooks-vb
  add-version-tag my_project_dir


Options
_______

- `--skip-tag` - skip tagging and only validate a version against PEP440
- `--version-file` - change version file location (__init__.py)
- `--version-var` - change version variable name (__version__)
- `--remote` - change default git remote name to pre-pull tags from (origin)
- `--branch` - change default branch name (master)


publish-package
^^^^^^^^^^^^^^^

It will automatically build and publish a package on each version change.
You will need a properly configured `.pypirc` for this. If a package with such
version is already present in PyPI then it won't be built.
Version tags are checked against `PEP440 <https://www.python.org/dev/peps/pep-0440>`_

Usage
_____

Add it to your `.pre-commit-config.yaml` for `pre-commit <https://pre-commit.com>`_:

.. code-block::

  - repo: https://github.com/violet-black/hooks-vb
    rev: 0.0.2
    hooks:
      - id: publish-package
        args: [ 'my_package' ]

Also you can install the package via pip and run the hook from the CLI:

.. code-block::

  pip install hooks-vb
  publish-package my_project_dir


Options
_______

- `--package-name` - alternative package name (package dir name by default)
- `--dist-type` - package type (sdist or wheel)
- `--output` - package storage dir (./dist)
- `--repository` - alternative PyPI repository name (pypi)
- `--version-file` - change version file location (__init__.py)
- `--version-var` - change version variable name (__version__)


Development
-----------

You must setup the package in the dev mode and with dev dependencies.
The script will automatically install pre-commit and pre-commit hooks for the
repository.


.. code-block::

  git clone https://github.com/violet-black/hooks-vb.git
  pip install -e .[dev]