Skip to content

feat: support NATIVE env var for container-free linting#107

Merged
zeitlinger merged 4 commits intomainfrom
feat/native-env-var
Mar 19, 2026
Merged

feat: support NATIVE env var for container-free linting#107
zeitlinger merged 4 commits intomainfrom
feat/native-env-var

Conversation

@zeitlinger
Copy link
Copy Markdown
Member

@zeitlinger zeitlinger commented Mar 13, 2026

Summary

  • lint:super-linter now accepts NATIVE=true env var (mirrors existing AUTOFIX=true pattern)
  • New lint:fast grouping task (super-linter + links) — skips renovate-deps
  • New native-lint meta-task: NATIVE=true mise run lint:fast
  • pre-commit now runs lint:fast natively (was only super-linter before)
  • Removed autofix from pre-commit task (check-only)
  • Modernized lint:super-linter-native and pre-commit to use structured run/env syntax
  • Updated README: documented env var alternatives, lint:fast, native-lint examples

Test plan

  • NATIVE=true mise run lint:super-linter — runs native linters
  • mise run native-lint — propagates NATIVE, runs super-linter + links
  • mise run lint:super-linter --native — CLI flag still works
  • mise run fix — AUTOFIX still propagates through full lint
  • mise run lint — still runs all lints including renovate-deps

The --native flag on lint:super-linter can now also be set via
NATIVE=true env var, mirroring how AUTOFIX=true already works.
This allows the top-level lint meta-task (which uses depends) to
propagate native mode — mise's depends can't forward CLI flags
but env vars flow through naturally.

Adds a native-lint task and modernizes lint:super-linter-native
and pre-commit to use structured run syntax where applicable.
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Copilot AI review requested due to automatic review settings March 13, 2026 11:20
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR extends the existing lint task workflow to support running Super-Linter in “native” (container-free) mode via NATIVE=true, enabling easier local/dev and constrained-environment linting while keeping the existing CLI flags and AUTOFIX patterns.

Changes:

  • Added NATIVE=true env var support to lint:super-linter (in addition to the --native flag).
  • Added a native-lint meta-task and updated native/pre-commit tasks to propagate native mode via env.
  • Updated README to document env-var-based mode propagation and native linting examples.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
tasks/lint/super-linter.sh Enables native-mode selection via NATIVE=true environment variable.
mise.toml Updates tasks to propagate native mode via env and adds native-lint meta-task.
README.md Documents NATIVE env var usage, native-lint workflow, and updated pre-commit behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread README.md Outdated
Comment thread README.md Outdated
lint:fast runs super-linter + links (the fast lints). lint still
runs everything including renovate-deps. native-lint and pre-commit
now target lint:fast to avoid spawning Renovate.
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Comment thread README.md Outdated
zeitlinger added a commit to prometheus/client_java that referenced this pull request Mar 19, 2026
- Add lint:spotless task for Java format checking
- Add lint:fast grouping (super-linter + links + bom + example-poms + spotless)
- Add native-lint task (NATIVE=true, no container needed)
- Switch pre-commit to NATIVE=true mise run lint:fast
- Exclude generated CHANGELOG.md from super-linter and lychee

Depends on grafana/flint#107 (NATIVE env var) and
grafana/flint#112 (v8.5.0 version mapping).
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
zeitlinger added a commit to prometheus/client_java that referenced this pull request Mar 19, 2026
- Add lint:spotless task for Java format checking
- Add lint:fast grouping (super-linter + links + bom + example-poms + spotless)
- Add native-lint task (NATIVE=true, no container needed)
- Switch pre-commit to NATIVE=true mise run lint:fast
- Exclude generated CHANGELOG.md from super-linter and lychee

Depends on grafana/flint#107 (NATIVE env var) and
grafana/flint#112 (v8.5.0 version mapping).
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Co-authored-by: Martin Costello <martin@martincostello.com>
@zeitlinger zeitlinger requested a review from a team as a code owner March 19, 2026 10:47
@zeitlinger zeitlinger enabled auto-merge (squash) March 19, 2026 10:47
@cla-assistant
Copy link
Copy Markdown

cla-assistant Bot commented Mar 19, 2026

CLA assistant check
All committers have signed the CLA.

@zeitlinger zeitlinger merged commit 0a8193d into main Mar 19, 2026
9 of 10 checks passed
@zeitlinger zeitlinger deleted the feat/native-env-var branch March 19, 2026 10:48
zeitlinger pushed a commit that referenced this pull request Mar 19, 2026
🤖 I have created a release *beep* *boop*
---


## [0.9.0](v0.8.0...v0.9.0)
(2026-03-19)


### Features

* support NATIVE env var for container-free linting
([#107](#107))
([0a8193d](0a8193d))


### Bug Fixes

* decouple version mapping generation from pinned super-linter version
([#112](#112))
([5370e77](5370e77))
* fail native lint when enabled tools are missing
([#111](#111))
([163bb6b](163bb6b))
* tighten markdownlint config for native mode
([#106](#106))
([6ef25b2](6ef25b2))

---
> [!IMPORTANT]
> Close and reopen this PR to trigger CI checks.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
zeitlinger added a commit to prometheus/client_java that referenced this pull request Mar 19, 2026
## Summary

- Add `lint:spotless` task for Java format checking
- Add `lint:fast` grouping task (super-linter + links + bom +
example-poms + spotless)
- Add `native-lint` meta-task (`NATIVE=true`, no container needed)
- Switch `pre-commit` to `NATIVE=true mise run lint:fast`

## Blocked on

- grafana/flint#107 — `NATIVE` env var support
for `lint:super-linter`
- grafana/flint#112 — v8.5.0 version mapping for
`setup:native-lint-tools`

After those merge, update the flint SHA in `mise.toml`.

## Test plan

- [ ] `mise run native-lint` passes after flint update
- [ ] `mise run lint` still works in CI (container mode)
- [ ] Pre-commit hook works with native linting

---------

Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
zeitlinger pushed a commit that referenced this pull request Apr 13, 2026
## flint v0.20.0 — Rust rewrite

flint has been rewritten from scratch in Rust. The bash + Docker stack
is replaced by a fast, cross-platform native binary with no container
dependency.

### Highlights

- **Native binary** — no Docker, no bash wrappers; runs anywhere mise
can install a Rust crate
- **Parallel linting** — all checks run concurrently
- **Diff-aware** — only checks files changed since the merge base by
default (`--full` for everything)
- **`flint update`** — migrates obsolete `mise.toml` tool keys
automatically (e.g. `ubi:` → `github:`, `npm:markdownlint-cli` →
`npm:markdownlint-cli2`)
- **`flint hook install`** — installs a pre-commit hook without any mise
task knowledge
- **New linters**: `gofmt`, `google-java-format`, `ktlint`,
`dotnet-format`, `markdownlint-cli2`, `xmllint` (via `cargo:xmloxide`),
`license-header` (pure-Rust, no binary)
- **Windows support** — ktlint self-executing JAR handled via explicit
`java -jar` invocation

### Migration

See
[AGENTS-V2.md](https://github.com/grafana/flint/blob/main/AGENTS-V2.md)
and [README.md](https://github.com/grafana/flint/blob/main/README.md)
for full setup instructions.

Quick reference for existing consumers:

```toml
[tools]
# While installing from source (pre-crates.io release):
"cargo:https://github.com/grafana/flint" = "branch:main"

[env]
FLINT_CONFIG_DIR = ".github/config"

[tasks.lint]
run = "flint run"

[tasks."lint:fix"]
run = "flint run --fix"
```

Remove: `lint:super-linter`, `lint:links`, `lint:renovate-deps`,
`setup:native-lint-tools`, `setup:pre-commit-hook` tasks. Run `flint
update` to auto-migrate any obsolete tool keys.

> [!NOTE]
> The changelog below includes entries from the legacy v1 bash era — see
[README-V1.md](https://github.com/grafana/flint/blob/main/README-V1.md)
for v1 docs.

---

##
[0.20.0](flint-v0.19.0...flint-v0.20.0)
(2026-04-13)


### Features

* add flint v2 Rust binary
([#139](#139))
([19f2b25](19f2b25))
* add native linting mode and version mapping infrastructure
([#93](#93))
([24b06da](24b06da))
* add Renovate shareable preset for consuming repos
([#17](#17))
([8a06590](8a06590))
* consolidate link checking and add autofix flags
([#7](#7))
([086a5e9](086a5e9))
* flint update command, explicit JAR flag, v0.20.0
([#146](#146))
([b43bf52](b43bf52))
* handle line-number anchors and issue comments globally
([#56](#56))
([cf751df](cf751df))
* **links:** add GitHub URL remaps for line-number and fragment anchors
([#28](#28))
([5b59065](5b59065))
* **links:** auto-remap base-branch GitHub URLs to PR branch
([#18](#18))
([dd6cc61](dd6cc61))
* **renovate:** support SHA-pinned URLs in Renovate preset
([#21](#21))
([4fd1f28](4fd1f28))
* **super-linter:** default to slim image
([#24](#24))
([c8eeab8](c8eeab8))
* support NATIVE env var for container-free linting
([#107](#107))
([0a8193d](0a8193d))


### Bug Fixes

* activate mise environment in native lint mode
([#123](#123))
([d0fec45](d0fec45))
* add 'mise run fix' hint to lint failure output
([#90](#90))
([5b4ad5d](5b4ad5d))
* decouple version mapping generation from pinned super-linter version
([#112](#112))
([5370e77](5370e77))
* **deps:** update rust crate crossterm to 0.29
([#156](#156))
([c59ae3e](c59ae3e))
* **deps:** update rust crate similar to v3
([#160](#160))
([684be4e](684be4e))
* **deps:** update rust crate toml to v1
([#161](#161))
([3aae614](3aae614))
* **deps:** update rust crate toml_edit to 0.25
([#158](#158))
([42d9efd](42d9efd))
* exclude GitHub compare links from lychee checks
([#10](#10))
([e714608](e714608))
* fail native lint when enabled tools are missing
([#111](#111))
([163bb6b](163bb6b))
* improve link checker reliability against GitHub rate limiting
([#95](#95))
([7a5282d](7a5282d))
* include staged files in native lint file list
([#135](#135))
([34412d6](34412d6))
* **links:** add regex anchors to remap patterns
([#19](#19))
([2e17348](2e17348))
* native lint in worktrees, trust toml, use ec binary, drop isort
([#134](#134))
([8594bba](8594bba))
* **release-please:** fix footer not appearing on release PRs
([#40](#40))
([d7a55e4](d7a55e4))
* remap same-repo GitHub URLs to local file paths
([#100](#100))
([b4feadd](b4feadd))
* **renovate-deps:** forward GITHUB_TOKEN as GITHUB_COM_TOKEN
([#132](#132))
([4d6510b](4d6510b))
* replace broken release-please PR comment with docs
([#12](#12))
([817b37d](817b37d))
* run shellcheck on .bats files in native mode
([#137](#137))
([a4fd3f8](a4fd3f8))
* strip Scroll to Text Fragment anchors in link checks
([#86](#86))
([b630cdf](b630cdf))
* tighten markdownlint config for native mode
([#106](#106))
([6ef25b2](6ef25b2))
* use remap instead of exclude for issue comment anchors
([#58](#58))
([656f355](656f355))

---
> [!IMPORTANT]
> Close and reopen this PR to trigger CI checks.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This was referenced Apr 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants