heroforge-core 0.2.2

Pure Rust core library for reading and writing Fossil SCM repositories
Documentation
//! Example: Find and read files from a Heroforge repository using builder pattern

use heroforge_core::{Repository, Result};

fn main() -> Result<()> {
    let repo = Repository::open("../code/heroforge.forge")?;

    println!("=== Find all Rust files ===");
    let rust_files = repo.files().on_trunk().find("*.rs")?;
    for f in &rust_files {
        println!("  {}", f.name);
    }

    println!("\n=== Find all JavaScript files in src/ ===");
    let js_files = repo.files().on_trunk().find("src/*.js")?;
    for f in js_files.iter().take(10) {
        println!("  {}", f.name);
    }
    if js_files.len() > 10 {
        println!("  ... and {} more", js_files.len() - 10);
    }

    println!("\n=== Read src/main.c (first 300 chars) ===");
    let content = repo.files().on_trunk().read_string("src/main.c")?;
    let preview: String = content.chars().take(300).collect();
    println!("{}", preview);

    println!("\n=== File stats ===");
    let all_files = repo.files().on_trunk().list()?;
    println!("Total files: {}", all_files.len());

    let c_files = repo.files().on_trunk().find("*.c")?;
    println!("C files: {}", c_files.len());

    let h_files = repo.files().on_trunk().find("*.h")?;
    println!("Header files: {}", h_files.len());

    Ok(())
}