5292fea2ba2b76fc86f4878c3b1bfda31f86ca4b

Author
Markus Hofbauer <markus.hofbauer@flyzipline.com>
Committer
GitHub <noreply@github.com>
Date

Message

feat(pre-commit): add `prek` support (#13529)

Closes #13432

Diff

 1diff --git a/plugins/pre-commit/README.md b/plugins/pre-commit/README.md
 2index e6d80d3690cd8ad39bf07d4c94e7055d25ffe66e..e098ea2e8c294d67fed46979958487269e80f118 100644
 3--- a/plugins/pre-commit/README.md
 4+++ b/plugins/pre-commit/README.md
 5@@ -1,6 +1,8 @@
 6 # Pre-commit plugin
 7 
 8 This plugin adds aliases for common commands of [pre-commit](https://pre-commit.com/).
 9+It also supports [prek](https://github.com/prek/prek) as a drop-in replacement.
10+If `prek` is available, it will be used; otherwise, `pre-commit` is used as fallback.
11 
12 To use this plugin, add it to the plugins array in your zshrc file:
13 
14@@ -10,10 +12,11 @@ plugins=(... pre-commit)
15 
16 ## Aliases
17 
18-| Alias   | Command                                | Description                                            |
19-| ------- | -------------------------------------- | ------------------------------------------------------ |
20-| prc     | `pre-commit`                           | The `pre-commit` command                               |
21-| prcau   | `pre-commit autoupdate`                | Update hooks automatically                             |
22-| prcr    | `pre-commit run`                       | The `pre-commit run` command                           |
23-| prcra   | `pre-commit run --all-files`           | Run pre-commit hooks on all files                      |
24-| prcrf   | `pre-commit run --files`               | Run pre-commit hooks on a given list of files          |
25+| Alias | Command                                                | Description                                   |
26+| ----- | ------------------------------------------------------ | --------------------------------------------- |
27+| prc   | `prek` or `pre-commit`                                 | The pre-commit command                        |
28+| prcau | `prek auto-update` or `pre-commit autoupdate`          | Update hooks automatically                    |
29+| prcr  | `prek run` or `pre-commit run`                         | The pre-commit run command                    |
30+| prcra | `prek run --all-files` or `pre-commit run --all-files` | Run pre-commit hooks on all files             |
31+| prcrf | `prek run --files` or `pre-commit run --files`         | Run pre-commit hooks on a given list of files |
32+
33diff --git a/plugins/pre-commit/pre-commit.plugin.zsh b/plugins/pre-commit/pre-commit.plugin.zsh
34index c3d0c629036627e29e1c3f0d460aa87b34c4ddf5..11219fed2f7d0e26ca35c7830ce111200e0b656f 100644
35--- a/plugins/pre-commit/pre-commit.plugin.zsh
36+++ b/plugins/pre-commit/pre-commit.plugin.zsh
37@@ -1,8 +1,17 @@
38-# Aliases for pre-commit
39-alias prc='pre-commit'
40+# Aliases for pre-commit (uses prek if available, else pre-commit)
41+if command -v prek &> /dev/null; then
42+    _prc_cmd='prek'
43+    _prc_autoupdate='auto-update'
44+else
45+    _prc_cmd='pre-commit'
46+    _prc_autoupdate='autoupdate'
47+fi
48 
49-alias prcau='pre-commit autoupdate'
50+alias prc="$_prc_cmd"
51+
52+alias prcau="$_prc_cmd $_prc_autoupdate"
53+
54+alias prcr="$_prc_cmd run"
55+alias prcra="$_prc_cmd run --all-files"
56+alias prcrf="$_prc_cmd run --files"
57 
58-alias prcr='pre-commit run'
59-alias prcra='pre-commit run --all-files'
60-alias prcrf='pre-commit run --files'