pre-commit-run-hook-entry

Run pre-commit hook entry. Allow to run pre-commit hooks for text editor formatting / linting needs


Keywords
pre-commit, hook, vscode, sublime-text3, python-3-10, python-3-6, python-3-7, python-3-8, python-3-9, sublime-text-3
License
BSD-3-Clause
Install
pip install pre-commit-run-hook-entry==1.0.0b1

Documentation

pre-commit-run-hook-entry

CI Workflow pre-commit black Latest Version Python versions BSD License Coverage

Run pre-commit hook entry. Allow to run pre-commit hooks for text editor formatting / linting needs.

Danger Zone

IMPORTANT: This is highly experimental tool as pre-commit internals does not intend to be used in other scripts. It might be broken after new pre-commit release.

TO USE WITH CAUTION!

Requirements

License

pre-commit-run-hook-entry is licensed under the terms of BSD-3-Clause license.

Installation

pip install pre-commit-run-hook-entry

Usage

pre-commit-run-hook-entry HOOK [ARGS]
pre-commit-which-hook-entry HOOK

Prerequisites

pre-commit-run-hook-entry only works in directories, where pre-commit run --all HOOK is executable.

VS Code Integration

Example below illustrates how to configure VS Code to use black, flake8 & mypy pre-commit hooks for formatting & linting,

{
    "python.formatting.provider": "black",
    "python.formatting.blackPath": "pre-commit-run-hook-entry",
    "python.formatting.blackArgs": ["black"],
    "python.linting.enabled": true,
    "python.linting.flake8Enabled": true,
    "python.linting.flake8Path": "pre-commit-run-hook-entry",
    "python.linting.flake8Args": ["flake8"],
    "python.linting.mypyEnabled": true,
    "python.linting.mypyPath": "pre-commit-run-hook-entry",
    "python.linting.mypyArgs": ["mypy"]
}

Sublime Text 3 Integration

sublack

From one point sublack has builtin pre-commit integration, but it seems do not respect settings from pyproject.toml, to fix this use pre-commit-run-black-entry as sublack.black_command,

{
    "sublack.black_command": "pre-commit-run-black-entry"
}

SublimeLinter-flake8

{
    "SublimeLinter.linters.flake8.executable": "pre-commit-run-hook-entry",
    "SublimeLinter.linters.flake8.args": ["--", "flake8"]
}

SublimeLinter-contrib-mypy

{
    "SublimeLinter.linters.mypy.executable": "pre-commit-run-hook-entry",
    "SublimeLinter.linters.mypy.args": ["--", "mypy"]
}

SublimeJsPrettier

First, you need to find out path to prettier hook entry with,

pre-commit-which-hook-entry prettier

Then, paste command output (<OUTPUT>) into plugin config,

{
    "js_prettier": {
        "prettier_cli_path": "<OUTPUT>"
    }
}

SublimeLinter-eslint

First, you need to find out path to eslint hook entry with,

pre-commit-which-hook-entry eslint

Then, paste command output (<OUTPUT>) into plugin config,

{
    "SublimeLinter.linters.eslint.executable": "<OUTPUT>",
    "SublimeLinter.linters.eslint.env": {
        "NODE_PATH": "<OUTPUT>/../../lib/node_modules"
    }
}

IMPORTANT: If you're using any additionalDependencies for eslint hook, you need to configure NODE_PATH, so plugin will be able to find out given dependencies.

Issues & Feature Requests

Feel free to submit new issue or feature request at GitHub