rgen_cli_lib/cmds/
packs.rs

1use anyhow::Result;
2use rgen_core::LockfileManager;
3use std::env;
4
5pub fn run() -> Result<()> {
6    // Get current working directory
7    let current_dir = env::current_dir()?;
8    let lockfile_manager = LockfileManager::new(&current_dir);
9
10    // Load installed packs
11    let installed_packs = lockfile_manager.list()?;
12
13    if installed_packs.is_empty() {
14        println!("No rpacks installed in this project");
15        return Ok(());
16    }
17
18    println!("Installed rpacks ({}):", installed_packs.len());
19    println!();
20
21    // Header
22    println!(
23        "{:<40} {:<12} {:<20} SHA256",
24        "ID", "VERSION", "SOURCE"
25    );
26    println!("{}", "-".repeat(80));
27
28    // List packs
29    for pack in installed_packs {
30        let source = if pack.source.len() > 20 {
31            format!("{}...", &pack.source[..17])
32        } else {
33            pack.source
34        };
35
36        let sha256 = if pack.sha256.len() > 20 {
37            format!("{}...", &pack.sha256[..17])
38        } else {
39            pack.sha256
40        };
41
42        println!(
43            "{:<40} {:<12} {:<20} {}",
44            pack.id, pack.version, source, sha256
45        );
46    }
47
48    Ok(())
49}