summaryrefslogtreecommitdiff
path: root/src/manager.rs
diff options
context:
space:
mode:
authorNaz <ndpm13@ch-naseem.com>2025-08-03 10:08:45 +0100
committerNaz <ndpm13@ch-naseem.com>2025-08-03 10:08:45 +0100
commit57ffe6ff51a8f3ccc41607f18dcf3c9039e85d94 (patch)
tree7ab8e10bf2fce88ca3cdfb2a6b13c0717c638407 /src/manager.rs
parent6b3f5d37fbce2e880a454e66d8fbd78269f1c867 (diff)
parentdc0ee6ce99a0480b7a6c228492936b16ceaf60cd (diff)
Merge pull request 'Add comprehensive error types' (#12) from feat/issue-5 into main
Reviewed-on: https://git.ch-naseem.com/ndpm13/zap-rs/pulls/12
Diffstat (limited to 'src/manager.rs')
-rw-r--r--src/manager.rs21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/manager.rs b/src/manager.rs
index 66ed6f6..6f3cfac 100644
--- a/src/manager.rs
+++ b/src/manager.rs
@@ -1,6 +1,6 @@
use tokio::fs;
-use crate::{AppImage, Downloader, Index, SymlinkManager, index_dir};
+use crate::{AppImage, Downloader, Index, Result, SymlinkManager, index_dir};
#[derive(Debug, Default)]
pub struct PackageManager {
@@ -17,18 +17,15 @@ impl PackageManager {
symlink_manager: SymlinkManager::new(),
}
}
- pub async fn install(
- &self,
- appimage: &mut AppImage,
- appname: &str,
- ) -> Result<(), Box<dyn std::error::Error>> {
- if self.index.exists(&appimage.executable) {
- return Err(format!("{} is already installed.", &appimage.executable).into());
+ pub async fn install(&self, appimage: &mut AppImage, appname: &str) -> Result<()> {
+ if self.index.exists(&appimage.executable)? {
+ println!("{} is already installed.", appimage.executable);
+ return Ok(());
}
appimage.file_path = self
.downloader
- .prepare_path(&appimage.source.meta.url, &appimage.executable);
+ .prepare_path(&appimage.source.meta.url, &appimage.executable)?;
self.downloader
.download_with_progress(&appimage.source.meta.url, &appimage.file_path)
.await?;
@@ -37,7 +34,7 @@ impl PackageManager {
self.symlink_manager.create(appimage).await?;
Ok(())
}
- pub async fn remove(&self, appname: &str) -> Result<(), Box<dyn std::error::Error>> {
+ pub async fn remove(&self, appname: &str) -> Result<()> {
let appimage = self.index.get(appname).await?;
fs::remove_file(&appimage.file_path).await?;
@@ -46,8 +43,8 @@ impl PackageManager {
Ok(())
}
- pub async fn list(&self) -> Result<(), Box<dyn std::error::Error>> {
- let mut appimages = fs::read_dir(index_dir()).await?;
+ pub async fn list(&self) -> Result<()> {
+ let mut appimages = fs::read_dir(index_dir()?).await?;
while let Some(appimage) = appimages.next_entry().await? {
if let Some(stem) = appimage.path().file_stem().and_then(|s| s.to_str()) {