Skip to main content

ignore_match/
ignore_match.rs

1//! Evaluate `.gitignore` rules using [`ignore::IgnoreMatcher::check_path`].
2//!
3//! Run: `cargo run -p grit-lib --example ignore_match`
4
5use grit_lib::ignore::IgnoreMatcher;
6use grit_lib::repo::init_repository;
7use std::fs;
8
9fn main() -> grit_lib::error::Result<()> {
10    let root = tempfile::tempdir()?;
11    let repo = init_repository(root.path(), false, "main", None, "files")?;
12
13    let wt = repo.work_tree.as_ref().expect("non-bare");
14    fs::write(wt.join(".gitignore"), "*.log\n")?;
15
16    let mut matcher = IgnoreMatcher::from_repository(&repo)?;
17    let (ignored_log, m_log) = matcher.check_path(&repo, None, "build.log", false)?;
18    let (ignored_txt, m_txt) = matcher.check_path(&repo, None, "readme.txt", false)?;
19
20    println!("build.log ignored={ignored_log} ({m_log:?})");
21    println!("readme.txt ignored={ignored_txt} ({m_txt:?})");
22
23    Ok(())
24}