nyl 0.4.1

Kubernetes manifest generator with Helm integration
Documentation
# Renovate Integration

Nyl ships a reusable Renovate preset for Helm chart version bumps in `HelmChart`, `Component` shortcuts, and `project.aliases`.

## Use The Shared Preset

In your project's `renovate.json`:

```json
{
  "extends": [
    "config:recommended",
    "github>NiklasRosenstein/nyl//.github/renovate/nyl-helm-components.json5"
  ]
}
```

## What It Matches

The preset adds regex managers for:

- `HelmChart` resources (`apiVersion: nyl.niklasrosenstein.github.com/v1`)
  - `spec.chart.repository` + `spec.chart.name` + `spec.chart.version`
- `Component` shortcut resources (`apiVersion: components.nyl.niklasrosenstein.github.com/v1`)
  - `kind: https://...#<chart>@<version>`
  - `kind: oci://...@<version>`
  - `kind: git+...#<path>@<ref>`
- `nyl.toml` alias targets in `[project.aliases]`
  - `"myapi/v1/Kind" = "https://...#<chart>@<version>"`
  - `"myapi/v1/Kind" = "oci://...@<version>"`
  - `"myapi/v1/Kind" = "git+...#<path>@<ref>"`

## Datasource Mapping

- `https://...` shortcuts and Helm repositories -> Renovate `helm` datasource
- `oci://...` shortcuts and repositories -> Renovate `docker` datasource
- `git+...` shortcuts and repositories -> Renovate `git-tags` datasource

## Notes And Limitations

- Local component kinds (for example `example/v1/Nginx`) are intentionally ignored.
- Matches expect canonical field names (`repository`, `name`, `version`) in `HelmChart` specs.
- `git+...@<ref>` updates depend on available Git tags for the referenced repository.

## Troubleshooting

- If a dependency is not detected, first verify it includes an explicit `@<version>` (or `spec.chart.version` for `HelmChart`).
- Run `renovate-config-validator` against your final config to verify schema and templates.

## Validate Matcher Coverage

Nyl includes fixture-based matcher tests for the shared preset:

```bash
mise run test-renovate-matchers
```

The test runs the official `renovate/renovate` Docker image and validates extracted dependencies from Renovate's own logs.
Docker daemon access is required.

Fixtures are in `integrationtests/fixtures/renovate-matchers/`:

- `positive/`: inputs that must match
- `negative/`: inputs that must not match
- `expected.json`: expected extracted dependencies (`datasource`, `depName`, `currentValue`) per fixture file

The validation is extraction-focused: it asserts matching behavior and extracted dependency identity, and does not require successful network datasource lookups.

When changing `.github/renovate/nyl-helm-components.json5`, update fixtures and `expected.json` in the same change to keep matcher behavior explicit.