satkit 0.16.2

Satellite Toolkit
Documentation
use std::path::Path;
use std::path::PathBuf;

pub fn get_project_root() -> std::io::Result<PathBuf> {
    let path = std::env::current_dir()?;
    let path_ancestors = path.as_path().ancestors();

    for p in path_ancestors {
        let has_cargo = std::fs::read_dir(p)?
            .any(|p| p.unwrap().file_name() == *"Cargo.lock");
        if has_cargo {
            return Ok(PathBuf::from(p));
        }
    }
    Err(std::io::Error::new(
        std::io::ErrorKind::NotFound,
        "Ran out of places to find Cargo.toml",
    ))
}

pub fn get_testvec_dir() -> std::io::Result<PathBuf> {
    if let Ok(val) = std::env::var("SATKIT_TESTVEC_ROOT") {
        return Ok(Path::new(&val).to_path_buf());
    }
    let root = get_project_root()?;
    Ok(root.join("satkit-testvecs"))
}