Skip to main content

zoi_cli/cmd/
files.rs

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