codeowners-rs

Crates.iocodeowners-rs
lib.rscodeowners-rs
version0.1.1
sourcesrc
created_at2023-04-01 17:32:50.799095
updated_at2023-04-01 18:23:04.874895
descriptionA library for parsing and matching CODEOWNERS files
homepage
repositoryhttps://github.com/hmarr/codeowners-rs
max_upload_size
id827417
size50,809
Harry Marr (hmarr)

documentation

README

codeowners-rs

A fast Rust library and CLI for GitHub's CODEOWNERS file.

crates.io docs.rs CI

Includes a fast, hand-written parser for CODEOWNERS files. The resulting parse tree includes comments and byte offsets for all syntax components, making it suitable for writing syntax highlighters or providing syntax-aware diagnostic information.

The matcher works by building an NFA from the rules, which makes this library highly performant for large rulesets and matching large numbers of paths.

Example usage

use codeowners_rs::{parse, RuleSet};

let ruleset = parse("
*.rs @github/rustaceans
/docs/**/*.md @github/docs-team
").into_ruleset();

for path in &["src/main.rs", "docs/README.md", "README.md"] {
   let owners = ruleset.owners(path);
   println!("{}: {:?}", path, owners);
}

See the full documentation on docs.rs.

CLI usage

$ codeowners --help
Usage: codeowners [OPTIONS] [PATHS]...

Arguments:
  [PATHS]...

Options:
  -f, --file <CODEOWNERS_FILE>
          Path to a CODEOWNERS file. If omitted, the following locations will be tried: ./CODEOWNERS, ./.github/CODEOWNERS
  -p, --paths-from <PATHS_FROM_FILE>
          Match paths from this file rather than walking the directory tree
  -o, --owners <OWNERS>
          Filter results to files owned by this owner. May be used multiple times to match multiple owners
  -u, --unowned
          Filter results to show unowned files. May be used with -o
  -t, --threads <THREADS>
          Concurrency. If set to 0, a sensible value based on CPU count will be used [default: 0]
  -h, --help
          Print help information
  -V, --version
          Print version information
Commit count: 53

cargo fmt