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}