zoi-cli 1.24.6

Advanced Package Manager & Environment Orchestrator
Documentation
use crate::pkg::local;
use anyhow::Result;
use colored::*;
use std::path::Path;

pub fn run(path: &Path) -> Result<()> {
    let absolute_path = match path.canonicalize() {
        Ok(p) => p,
        Err(_) => path.to_path_buf(),
    };

    println!("Querying for file: {}", absolute_path.display());

    let installed_packages = local::get_installed_packages()?;

    for pkg in installed_packages {
        if pkg
            .installed_files
            .iter()
            .any(|f| Path::new(f) == absolute_path)
        {
            println!(
                "{} is owned by {} {}",
                absolute_path.display(),
                pkg.name.cyan(),
                pkg.version.yellow()
            );
            return Ok(());
        }
    }

    println!("No package owns file: {}", absolute_path.display());
    Ok(())
}