dolly-cli 0.1.2

Like apt, but for GitHub repositories — clone, build, install and update tools from source.
Documentation
use anyhow::{Context, bail};
use dolly_cli::{paths, recipe::Recipe};

pub fn handle(outdated: bool) -> anyhow::Result<()> {
    if outdated {
        bail!("`--outdated` not yet implemented");
    }

    let repos_dir = paths::repos_dir()?;
    if !repos_dir.exists() {
        return Ok(());
    }

    let mut packages: Vec<String> = Vec::new();
    for entry in
        std::fs::read_dir(&repos_dir).with_context(|| format!("reading {}", repos_dir.display()))?
    {
        let entry = entry?;
        if !entry.file_type()?.is_dir() {
            continue;
        }
        let repo = entry.file_name().to_string_lossy().into_owned();
        if Recipe::find(&repo).is_ok() {
            packages.push(repo);
        }
    }

    packages.sort();

    for repo in packages {
        println!("{repo}");
    }

    Ok(())
}