toml_path_matches
Same shape as the *_equals variants, but the asserted value is a regex matched against string values. Non-string matches produce a clear “value is not a string” violation.
Options
Section titled “Options”| Option | Type | Required | Default | Description |
|---|---|---|---|---|
if_present | boolean | false | When true, a query returning zero matches is silently OK - only real matches that fail the op produce violations. | |
matches | string | yes | Rust-regex pattern to match against the value at path. | |
path | string | yes | JSONPath expression rooted at $. |
Plus the common paths, level, id, and when fields. This table is generated from the JSON Schema; option types and defaults are authoritative.
Example
Section titled “Example”A crate version that isn’t valid semver
Section titled “A crate version that isn’t valid semver”The rule fires on this repository:
crates/crates/a/crates/a/Cargo.tomlcrates/b/crates/b/Cargo.toml[package]name = "a"version = "1.2.3"[package]name = "b"version = "0.4"With this .alint.yml:
version: 1rules: - id: pinned-version kind: toml_path_matches paths: "crates/*/Cargo.toml" path: "$.package.version" matches: '^\d+\.\d+\.\d+$' level: erroralint check reports:
--- crates/b/Cargo.toml -------------------------------------------------------- x error pinned-version value at path "0.4" does not match regex ^\d+\.\d+\.\d+$
Summary (1 violation): x 1 error 0 passing * 1 failingEvery crate version matches the semver pattern
Section titled “Every crate version matches the semver pattern”This repository is compliant:
crates/crates/a/crates/a/Cargo.tomlcrates/b/crates/b/Cargo.toml[package]name = "a"version = "1.2.3"[package]name = "b"version = "0.4.5"With this .alint.yml:
version: 1rules: - id: pinned-version kind: toml_path_matches paths: "crates/*/Cargo.toml" path: "$.package.version" matches: '^\d+\.\d+\.\d+$' level: warningalint check reports:
v All 1 rule(s) passed.