]> quire.kejadlen.dev Git - quire.git/commitdiff
Propagate FennelError directly instead of flattening to String
authorAlpha Chen <alpha@kejadlen.dev>
Sun, 26 Apr 2026 19:07:25 +0000 (19:07 +0000)
committerAlpha Chen <alpha@kejadlen.dev>
Mon, 27 Apr 2026 01:34:36 +0000 (18:34 -0700)
Error::Fennel now wraps FennelError via #[from], preserving miette
source labels and line information. Removes four .map_err closures.

Assisted-by: GLM-5.1 via pi
src/error.rs
src/quire.rs

index 7f4940c10344d61456b95de758af3430ec459af2..c930e2f8d8ae71a8ccb59ac6fe96c561896e7431 100644 (file)
@@ -12,8 +12,8 @@ pub enum Error {
     #[error("config not found: {0}")]
     ConfigNotFound(String),
 
-    #[error("fennel error: {0}")]
-    Fennel(String),
+    #[error(transparent)]
+    Fennel(#[from] crate::fennel::FennelError),
 
     #[error("git error: {0}")]
     Git(String),
index 6eee5c90a12ff8593833a9f8f2b381ec3e2e6c33..3935aaf95498170adcf087498fa67f60210eba88 100644 (file)
@@ -91,10 +91,8 @@ impl Repo {
             ))
         })?;
 
-        let fennel = Fennel::new().map_err(|e| crate::Error::Fennel(e.to_string()))?;
-        fennel
-            .load_string(&source, "HEAD:.quire/config.fnl")
-            .map_err(|e| crate::Error::Fennel(e.to_string()))
+        let fennel = Fennel::new()?;
+        Ok(fennel.load_string(&source, "HEAD:.quire/config.fnl")?)
     }
 }
 
@@ -141,10 +139,8 @@ impl Quire {
                 config_path.display().to_string(),
             ));
         }
-        let fennel = Fennel::new().map_err(|e| crate::Error::Fennel(e.to_string()))?;
-        fennel
-            .load_file(&config_path)
-            .map_err(|e| crate::Error::Fennel(e.to_string()))
+        let fennel = Fennel::new()?;
+        Ok(fennel.load_file(&config_path)?)
     }
 
     /// Validate a repository name and return its resolved path.