-
2.2.0
StableAll checks were successfulpublished / deps-installed (push) Successful in 0spublished / fetched (push) Successful in 0spublished / source-is-tested (push) Successful in 0spublished / projectfile-is-valid (push) Successful in 3spublished / signing-is-ready (push) Successful in 5spublished / source-is-compliant (push) Successful in 6spublished / source-is-secure (push) Successful in 7spublished / projectfile-is-ok (push) Successful in 4spublished / binaries-are-built (amd64, linux) (push) Successful in 32spublished / binaries-are-ok (push) Successful in 0spublished / documentation-passes-lint (push) Successful in 48spublished / documentation-is-ok (push) Successful in 0spublished / source-passes-lint (push) Successful in 50spublished / source-is-ok (push) Successful in 0spublished / inputs-are-ok (push) Successful in 0spublished / image-is-built (amd64) (push) Successful in 1m6spublished / secrets-ready (push) Successful in 0spublished / images-are-ok (push) Successful in 0spublished / container-is-ok (push) Successful in 0spublished / image-has-sbom (amd64) (push) Successful in 6spublished / container-ready-to-test (push) Successful in 0spublished / image-is-secure (amd64) (push) Successful in 7spublished / container-is-diagnosed (push) Successful in 0spublished / container-is-verified (amd64) (push) Successful in 25spublished / image-is-ready (push) Successful in 0spublished / artifacts-are-ok (push) Successful in 0spublished / ready-to-publish (push) Successful in 0spublished / publish-image (push) Successful in 0spublished / image-is-signed (push) Successful in 0spublished / image-is-attested (kiota) (push) Successful in 12spublished / image-is-attested (dockerhub) (push) Successful in 40spublished / release-is-published (kiota, damian-buho/ignorelint, https://kiota.ch) (push) Successful in 1spublished / release-is-published (codeberg, damian-buho/ignorelint, https://codeberg.org) (push) Successful in 3spublished / release-notes-are-published (push) Successful in 3spublished / published (push) Successful in 0sreleased this
2026-10-14 08:56:43 +00:00 | 53 commits to dev since this release35 commits, 1 contributor, 3 days since 2.1.0.
Features
- scripts: add corpus survey of public repositories (
46e1d46) - scripts: group corpus summary by severity (
0540aca) - scripts: lint the corpus with a host binary and keep named runs (
c27196a) - scripts: take the corpus top-list query from IGNORELINT_CORPUS_QUERY (
4f670a4) - linter: name the **/ form when an anchored dead glob would match deeper (
f7c421b) - release: attach releases to the Codeberg mirror (
4742165)
Bug fixes
- linter: stop reporting dangling symlinks as missing paths (
98a3b67) - linter: rewrite double negation only where npm cancels it (
a93c4ab) - linter: flag only a space before # as space in pattern (
531ff72) - linter: read # mid-pattern as literal and skip a leading BOM (
efaf592) - linter: keep a duplicate that follows a line of opposite polarity (
80852e2) - linter: lint .eslintignore with gitignore semantics (
d9d4512) - linter: retire IG-011, a leading slash anchors a negation (
eb28377) - linter: match a directory-only pattern's case only against a directory (
2e6f37c) - linter: warn on a ** inside a path segment, which git reads as * (
7a084bd) - linter: report a case-only near match as info that the path does not exist (
4fb8880) - linter: anchor a dead-glob check when the pattern has a slash in the middle (
e4d963a) - linter: anchor every dockerignore dead-glob check to the context root (
4cbf795) - linter: report a ** in .helmignore as an error, Helm rejects the rule (
ad89678) - linter: find an unanchored literal at any depth before reporting it missing (
7e5dbac) - linter: warn on a trailing ** in .dockerignore, which Moby matches like * (
820a952) - linter: report IG-005 and IG-006 once in .dockerignore (
dffdd6f) - linter: warn instead of error on consecutive stars in .gitignore (
67799fe) - linter: match npm built-in includes as npm-packlist does (
da79334)
Installation
Container image
Pull the published container image:
Pull from DockerHub — linux/amd64
docker pull damianbuho/ignorelint:2.2.0 alias ignorelint='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws damianbuho/ignorelint:2.2.0 ignorelint'This release also publishes the
2.2and2tags — pull the precision you want to pin.If the registries above are unreachable, pull from the origin instead:
Pull from Kiota — linux/amd64
docker pull kiota.ch/damian-buho/ignorelint:2.2.0 alias ignorelint='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws kiota.ch/damian-buho/ignorelint:2.2.0 ignorelint'Then run it as if it were installed — the alias runs every example as written against the current directory:
ignorelint --helpPrebuilt binary
Download the prebuilt binary for your platform from this release:
mkdir -p ~/.local/bin curl --fail --location --output ~/.local/bin/ignorelint https://kiota.ch/damian-buho/ignorelint/releases/download/2.2.0/ignorelint-linux-$(uname -m) chmod +x ~/.local/bin/ignorelint ~/.local/bin/ignorelint --helpPublished for:
linux/amd64,linux/arm64Usage
Run it as a step in a GitHub Actions workflow:
- uses: damian-buho/ignorelint@2.2.0The action takes these inputs:
Input Default Description pathsNewline-separated ignore files to lint. Empty enables auto-discovery. recursivefalseSearch subdirectories for ignore files (skips hidden dirs, node_modules, symlinks). config_fileProjectfile path read via pf-cli for the org.ignorelint policy subtree. fail_onerrorSeverity threshold that fails the job: none | error | warn | info fixfalseAutofix deterministically fixable issues (workspace will be modified). disabled_rulesComma-separated rule tags to skip entirely (e.g. IG-001,IG-020). errorComma-separated rule tags to promote to error severity. warningComma-separated rule tags to set to warning severity. infoComma-separated rule tags to demote to info severity. formatExtra report format (same values as --format). Empty emits none; sarif acts like sarif: true. no_failfalseReport every finding but always pass (beats fail_on). difffalsePreview autofix changes in the human report without writing (cannot combine with fix). plainfalseHuman report as one undecorated record per line. quietfalseOnly errors in the human report; suppresses notices (cannot combine with verbose). verbosefalseShow file discovery output on stderr (cannot combine with quiet). disable_ignore_pragmafalseParse suppression directives but apply none. file_path_in_reportRecord this path instead of the linted one in machine-readable reports. sariffalseAlso emit SARIF for github/codeql-action/upload-sarif. upload_sariffalseUpload the SARIF report to GitHub code scanning (implies sarif; needs security-events: write). commentfalsePost the human report as a sticky comment on the triggering pull request. versionImage tag to pull (e.g. latest, 1.2.3). Empty follows the release the action is pinned to, else latest. imageOverride the full image reference. Takes precedence over version.github_tokenToken used to post PR comments. Defaults to the workflow github.token when empty. ignorelint
$ ignorelint --help Description: Linter for *ignore files (.gitignore, .dockerignore, .eslintignore, etc.) Usage: ignorelint [options] [--] [<paths>...] Arguments: paths Files to lint; none discovers them in the current directory, a lone - reads stdin Options: --fail-on=FAIL-ON Exit non-zero at this severity or worse (error|warn|info|none, default: error) --no-fail Report every finding but always exit 0 (beats --fail-on) --plain Human output as one undecorated path:line [CODE] severity: message record per line --file-path-in-report=FILE-PATH-IN-REPORT Record this path instead of the linted one in machine-readable reports --format=FORMAT Output format (human|tty|gnu|json|checkstyle|junit|gitlab_codeclimate|codacy|sonarqube|sarif, default: human) -r, --recursive Search subdirectories for *ignore files (skips hidden dirs, node_modules, symlinks) --fix Auto-fix deterministically fixable issues (IG-001,003,008,015,018,022,023,024) --diff Preview auto-fix changes without writing (cannot combine with --fix) --stdin Lint piped content instead of files (requires --file; a lone - path does the same) --file=FILE Filename for --stdin input (drives format detection) --disabled-rules=DISABLED-RULES Skip rules entirely (comma-separated tags, e.g. IG-001,IG-020) (multiple values allowed) --error=ERROR Promote rules to error severity (comma-separated tags, e.g. IG-020) (multiple values allowed) --warning=WARNING Set rules to warning severity (comma-separated tags) (multiple values allowed) --info=INFO Demote rules to info severity (comma-separated tags; applied last) (multiple values allowed) --disable-ignore-pragma Parse suppression directives but apply none; IG-026 still lists them --config=CONFIG Projectfile read via pf-cli for the org.ignorelint policy subtree (default: ./projectfile.*) -h, --help Display help for the given command. When no command is given display help for the ignorelint command --silent Do not output any message -q, --quiet Only errors are displayed. All other output is suppressed -V, --version Display this application version --ansi|--no-ansi Force (or disable --no-ansi) ANSI output -n, --no-interaction Do not ask any interactive question -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Help: When no path is given, discovers supported *ignore files in the current directory. Discovery and diagnostics go to stderr; stdout carries only the report. Environment variables: SHELL_VERBOSITY=1 Same as -v (-1 same as -q) IGNORELINT_FAIL_ON=LEVEL Same as --fail-on (error|warn|info|none) IGNORELINT_NOFAIL=1 Same as --no-fail IGNORELINT_FORMAT=FORMAT Same as --format IGNORELINT_FIX=1 Same as --fix IGNORELINT_RECURSIVE=1 Same as --recursive IGNORELINT_DISABLED_RULES=CODES Same as --disabled-rules IGNORELINT_OVERRIDE_ERROR=CODES Same as --error IGNORELINT_OVERRIDE_WARNING=CODES Same as --warning IGNORELINT_OVERRIDE_INFO=CODES Same as --info IGNORELINT_CONFIG=PATH Same as --config IGNORELINT_DISABLE_IGNORE_PRAGMA=1 Same as --disable-ignore-pragma IGNORELINT_FILE_PATH_IN_REPORT=PATH Same as --file-path-in-report NO_COLOR=1 Disable colored output (also TERM=dumb) FORCE_COLOR=1 Color even when piped (--ansi and --no-ansi beat both)Examples and every command’s help are in Usage.
Image digests
A tag can move; a digest cannot. Pull this exact build:
docker pull docker.io/damianbuho/ignorelint@sha256:7ffb25d40fc37cae512b45211758fb4276fdf652f4ffe2d37d501918adde5dd7 docker pull kiota.ch/damian-buho/ignorelint@sha256:7ffb25d40fc37cae512b45211758fb4276fdf652f4ffe2d37d501918adde5dd7Platform Digest Size linux/amd64 sha256:c108805352f3f37dfe83a8651d50d7d16b669b4b29cb7ea59fbc20621e481e4796.3 MB Sizes are compressed layer bytes as stored in the registry.
Verify
Check that what you downloaded is what this project published.
Container image
The signature proves this project’s CI built and pushed the image; the attestation carries its software bill of materials.
COSIGN_KEY=https://kiota.ch/damian-buho/metadata/raw/branch/main/keys/ci-cosign-key.pub cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true docker.io/damianbuho/ignorelint@sha256:7ffb25d40fc37cae512b45211758fb4276fdf652f4ffe2d37d501918adde5dd7 cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true kiota.ch/damian-buho/ignorelint@sha256:7ffb25d40fc37cae512b45211758fb4276fdf652f4ffe2d37d501918adde5dd7 cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx docker.io/damianbuho/ignorelint@sha256:7ffb25d40fc37cae512b45211758fb4276fdf652f4ffe2d37d501918adde5dd7 cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx kiota.ch/damian-buho/ignorelint@sha256:7ffb25d40fc37cae512b45211758fb4276fdf652f4ffe2d37d501918adde5dd7Full changes: https://kiota.ch/damian-buho/ignorelint/compare/2.1.0...2.2.0
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- scripts: add corpus survey of public repositories (