bot-forge 1.0.2

Rust CLI for installing agent skills and developer tools from configurable forms.
Documentation
use std::fs;
use std::path::{Path, PathBuf};

#[test]
fn production_direct_output_is_confined_to_approved_output_boundaries() {
    fn visit(path: &Path, violations: &mut Vec<PathBuf>) {
        for entry in fs::read_dir(path).unwrap() {
            let path = entry.unwrap().path();
            if path.is_dir() {
                visit(&path, violations);
            } else if path.extension().is_some_and(|extension| extension == "rs") {
                let relative = path.strip_prefix(env!("CARGO_MANIFEST_DIR")).unwrap();
                if relative.starts_with("src/ui")
                    || relative.starts_with("src/cli")
                    || relative.starts_with("src/bin")
                    || matches!(
                        relative.to_string_lossy().as_ref(),
                        "src/execution/install.rs"
                            | "src/execution/environment.rs"
                            | "src/backends/apt_mirror.rs"
                            | "src/state/mod.rs"
                    )
                {
                    continue;
                }
                let source = fs::read_to_string(&path).unwrap();
                if ["print!(", "println!(", "eprint!(", "eprintln!("]
                    .iter()
                    .any(|needle| source.contains(needle))
                {
                    violations.push(relative.to_path_buf());
                }
            }
        }
    }
    let mut violations = Vec::new();
    visit(
        &PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("src"),
        &mut violations,
    );
    assert!(
        violations.is_empty(),
        "direct output outside approved output boundaries: {violations:?}"
    );
}