gts-validator 0.10.1

GTS identifier validator for documentation and configuration files
Documentation

gts-validator

GTS identifier validator for documentation and configuration files (.md, .json, .yaml).

Overview

gts-validator provides both:

  • a CLI binary (gts-validator) for CI and local validation, and
  • a library API for embedding validation into Rust applications.

The crate provides a clean separation between:

  • Core validation engine (input-agnostic): normalize → validate → report
  • Input strategies (starting with filesystem scanning)

CLI usage

Install:

cargo install gts-validator

Examples:

# Basic scan
gts-validator docs modules libs examples

# Vendor enforcement
gts-validator --vendor x docs modules

# Exclusions (repeatable)
gts-validator --exclude "target/*" --exclude "docs/api/*" docs

# Machine-readable output
gts-validator --json docs

# Strict markdown discovery mode
gts-validator --strict docs

If no paths are passed, the CLI scans existing default roots: docs, modules, libs, examples.

Library usage

use std::path::PathBuf;
use gts_validator::{validate_fs, FsSourceConfig, ValidationConfig, VendorPolicy};

let mut fs_config = FsSourceConfig::default();
fs_config.paths = vec![PathBuf::from("docs"), PathBuf::from("modules")];
fs_config.exclude = vec!["target/*".to_owned()];

let mut validation_config = ValidationConfig::default();
validation_config.vendor_policy = VendorPolicy::MustMatch("x".to_owned());

let report = validate_fs(&fs_config, &validation_config).unwrap();
println!("Files scanned: {}", report.scanned_files);
println!("Errors: {}", report.errors_count());
println!("OK: {}", report.ok);

Output Formatting

The crate includes output formatters for rendering validation reports:

use gts_validator::output;

// JSON output
let mut stdout = std::io::stdout();
output::write_json(&report, &mut stdout).unwrap();

// Human-readable output
output::write_human(&report, &mut stdout).unwrap();

License

Apache-2.0