Compare commits
2 Commits
3c9602bdd3
...
c2f1ec0060
Author | SHA1 | Date |
---|---|---|
|
c2f1ec0060 | |
|
1cd3ea67f1 |
3
justfile
3
justfile
|
@ -14,3 +14,6 @@ run mode="quiet":
|
||||||
|
|
||||||
build:
|
build:
|
||||||
cargo build --release
|
cargo build --release
|
||||||
|
|
||||||
|
clean:
|
||||||
|
cargo clean
|
47
src/main.rs
47
src/main.rs
|
@ -136,16 +136,45 @@ fn handle_package_command(
|
||||||
|
|
||||||
fn handle_packages_command(
|
fn handle_packages_command(
|
||||||
managers: &[Box<dyn PackageManager>],
|
managers: &[Box<dyn PackageManager>],
|
||||||
_source_filter: Option<String>
|
source_filter: Option<String> // Removed the underscore!
|
||||||
) -> Result<(), Box<dyn std::error::Error>> {
|
) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
if let Some(dnf) = managers.iter().find(|m| m.name() == "dnf") {
|
if let Some(source_name) = source_filter {
|
||||||
let packages = dnf.get_installed_packages()?;
|
// Filter by specific source
|
||||||
println!("Installed packages ({} total):", packages.len());
|
let source_type = match source_name.to_lowercase().as_str() {
|
||||||
for package in packages.iter() {
|
"dnf" => PackageSource::Dnf,
|
||||||
println!(" {} {} ({})",
|
"flatpak" => PackageSource::Flatpak,
|
||||||
package.name,
|
"apt" => PackageSource::Apt,
|
||||||
package.version,
|
"snap" => PackageSource::Snap,
|
||||||
package.source.name());
|
_ => {
|
||||||
|
println!("Unknown source: {}. Available: dnf, flatpak, apt, snap", source_name);
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Find manager for this source
|
||||||
|
if let Some(manager) = managers.iter().find(|m| m.source_type() == source_type) {
|
||||||
|
let packages = manager.get_installed_packages()?;
|
||||||
|
println!("{} packages ({} total):", source_name, packages.len());
|
||||||
|
for package in packages.iter() {
|
||||||
|
println!(" {} {}", package.name, package.version);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
println!("No {} package manager found or available", source_name);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Show all packages from all managers
|
||||||
|
for manager in managers {
|
||||||
|
match manager.get_installed_packages() {
|
||||||
|
Ok(packages) => {
|
||||||
|
println!("\n{} packages ({} total):", manager.name(), packages.len());
|
||||||
|
for package in packages.iter() {
|
||||||
|
println!(" {} {}", package.name, package.version);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
println!("Error getting packages from {}: {}", manager.name(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
Loading…
Reference in New Issue