Files
renovate/lib/modules/manager/pre-commit
Sebastian Poxhofer 97327c3d28 refactor(linters): add prefer-coerce-array rule (#45492)
* refactor(linters): add prefer-coerce-array rule

Refs #45217

`x ?? []` and `coerceArray(x)` say the same thing, but only the second
one is searchable and consistent. The rule flags a `??` whose default is
a bare `[]` literal; a non-empty default or an asserted `([] as Foo[])`
still passes.

Applying it across `lib/` surfaced three spots the helper cannot cover,
which keep `?? []` with a disable comment or a narrower fix:

- `package-files.ts` destructures a tuple, which `coerceArray()` widens
- `generate.spec.ts` defaults `matchAll()`, an iterator rather than an array
- `mise/upgradeable-tooling.ts` declares a `Record` return, so its
  `?? []` fallback was wrong to begin with and becomes `coerceObject()`

* refactor(platform/github): hoist the GHE version header lookup

`Object.entries(...).find()` returns a tuple, and defaulting it with
`?? []` only to destructure the second element reads as an array
default when it is not one. Name the found entry instead, which drops
the `?? []` rather than routing a tuple through `coerceArray()`.
2026-08-28 09:27:58 +00:00
..

Important note: The pre-commit manager is disabled by default and must be opted into through config. Renovate's approach to version updating is not fully aligned with pre-commit autoupdate and this has caused frustration for pre-commit's creator/maintainer. Attempts to work with the pre-commit project to fix these gaps have been rejected, so we have chosen to disable the manager by default indefinitely. Please do not contact the pre-commit project/maintainer about any Renovate-related topic. To view a list of open issues related to the pre-commit manager in Renovate, see the filtered list using the manager:pre-commit label.

When enabled, Renovate supports updating of Git dependencies within pre-commit configuration .pre-commit-config.yaml files or other YAML files that use the same format (via managerFilePatterns configuration). Updates are performed if the files follow the conventional format used in typical pre-commit files:

repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v1.0.0
    hooks:
      - id: some-hook-id

To enable the pre-commit manager, add the following config:

{
  "pre-commit": {
    "enabled": true
  }
}

Alternatively, add :enablePreCommit to your extends array.

Additional Dependencies

Renovate has partial support for additional_dependencies, currently Go, Node.js and Python only.

You will need to explicitly add the language to your hooks with additional_dependencies to let Renovate know what kind of dependencies they are.

Examples for the supported languages are listed below.

Go

- repo: https://github.com/rhysd/actionlint
  rev: v1.7.7
  hooks:
    - id: actionlint
      language: golang
      additional_dependencies:
        - 'github.com/wasilibs/go-shellcheck/cmd/shellcheck@v0.10.0'

Node.js

- repo: https://github.com/pre-commit/mirrors-prettier
  rev: v3.1.0
  hooks:
    - id: prettier
      language: node
      additional_dependencies:
        - '@trivago/prettier-plugin-sort-imports@^5.2.2'
        - prettier@^3.6.2

Python

- repo: https://github.com/psf/black
  rev: 19.3b0
  hooks:
    - id: black
      language: python
      additional_dependencies:
        - 'requests==1.1.1'