zoi/cmd/
files.rs

1use crate::pkg::{local, resolve};
2use anyhow::{Result, anyhow};
3use colored::*;
4
5pub fn run(package_name: &str) {
6    if let Err(e) = run_impl(package_name) {
7        eprintln!("{} {}", "Error:".red().bold(), e);
8        std::process::exit(1);
9    }
10}
11
12fn run_impl(package_name: &str) -> Result<()> {
13    let (pkg_meta, _, _, _, _) = resolve::resolve_package_and_version(package_name)?;
14
15    let installed_packages = local::get_installed_packages()?;
16
17    let Some(pkg) = installed_packages.iter().find(|p| p.name == pkg_meta.name) else {
18        return Err(anyhow!("Package '{}' is not installed.", package_name));
19    };
20
21    println!("Files for {} {}:", pkg.name.cyan(), pkg.version.yellow());
22
23    if pkg.installed_files.is_empty() {
24        println!("(No files recorded for this package)");
25    } else {
26        let mut sorted_files = pkg.installed_files.clone();
27        sorted_files.sort();
28        for file in &sorted_files {
29            println!("{}", file);
30        }
31    }
32
33    Ok(())
34}