An open API service indexing awesome lists of open source software.

https://github.com/j178/prek-action

A GitHub Action that runs pre-commit hooks using prek in your CI/CD pipeline
https://github.com/j178/prek-action

Last synced: 4 months ago
JSON representation

A GitHub Action that runs pre-commit hooks using prek in your CI/CD pipeline

Awesome Lists containing this project

README

          

# Prek Action

Run [prek](https://github.com/j178/prek) in your GitHub Actions workflows.

## Usage

```yaml
name: Prek checks
on: [push, pull_request]

jobs:
prek:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: j178/prek-action@v2
```

`prek` is always invoked as:

```text
prek run --show-diff-on-failure --color=always
```

## Version Tags

Major and minor tags are moving tags. For example, `v2` and `v2.0` are not fixed releases:

- `v2` always points to the latest `v2.x.y` release
- `v2.0` always points to the latest `v2.0.y` release

For a stable reference, pin to a specific release tag such as `v2.0.0`, or pin to a commit SHA.

## Inputs

| Input | Description | Required | Default |
| --- | --- | --- | --- |
| `extra-args` | Additional arguments appended to `prek run --show-diff-on-failure --color=always` | No | `--all-files` |
| `extra_args` | Deprecated alias for `extra-args` | No | |
| `prek-version` | Version or semver range to install, for example `0.2.30`, `0.3.x`, `<=1.0.0`, or `latest` | No | `latest` |
| `install-only` | Install `prek` but skip `prek run` | No | `false` |
| `working-directory` | Directory where `prek run` is executed | No | `.` |
| `show-verbose-logs` | Print the `prek` verbose log after `prek run` completes | No | `true` |
| `cache` | Cache the prek environment between workflow runs | No | `true` |
| `token` | Deprecated and unused; retained for backward compatibility | No | `''` |

## Outputs

| Output | Description |
| --- | --- |
| `prek-version` | The resolved `prek` version, normalized to a `v`-prefixed tag |
| `cache-hit` | Whether the restored prek cache exactly matched the computed primary cache key |

## Examples

Install and run against all files:

```yaml
steps:
- uses: actions/checkout@v6
- uses: j178/prek-action@v2
```

Pass extra arguments:

```yaml
steps:
- uses: actions/checkout@v6
- uses: j178/prek-action@v2
with:
extra-args: '--all-files --directory packages/'
```

Pin a specific `prek` version:

```yaml
steps:
- uses: actions/checkout@v6
- uses: j178/prek-action@v2
with:
prek-version: '0.2.30'
```

Resolve a semver range:

```yaml
steps:
- uses: actions/checkout@v6
- uses: j178/prek-action@v2
with:
prek-version: '0.3.x'
```

Install only:

```yaml
steps:
- uses: actions/checkout@v6
- uses: j178/prek-action@v2
with:
install-only: true
- run: prek run --show-diff-on-failure --color=always --all-files
```

Disable verbose log output after the run:

```yaml
steps:
- uses: actions/checkout@v6
- uses: j178/prek-action@v2
with:
show-verbose-logs: false
```
## Requirements

The target repository needs a `prek` or pre-commit configuration file:

- `prek.toml`
- `.pre-commit-config.yaml`
- `.pre-commit-config.yml`

## Contributing

For contributor setup, testing, bundling, and release steps, see [CONTRIBUTING.md](CONTRIBUTING.md).