From 1243b82c721fe0975987d25b78ea3a785628a5aa Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 11 May 2022 21:28:45 +0100 Subject: [PATCH] shapelib: Introduce and use LLE::InLibrary Otherwise bundle errors are really quite inscrutable. Signed-off-by: Ian Jackson --- src/shapelib.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/shapelib.rs b/src/shapelib.rs index a150ed02..a1317daf 100644 --- a/src/shapelib.rs +++ b/src/shapelib.rs @@ -135,6 +135,9 @@ pub enum LibraryLoadError { #[error("{0}")] UnsupportedColourSpec(#[from] UnsupportedColourSpec), #[error("bad item name (invalid characters) in {0:?}")] BadItemName(String), #[error("{0:?}")] MaterialsFormatVersionError(#[from] MFVE), + + #[error("library {lib}: {error}")] + InLibrary { lib: String, error: Box }, } #[derive(Error,Debug,Clone,Copy,Serialize,Deserialize)] @@ -860,6 +863,8 @@ impl LibrarySource for BuiltinLibrary<'_> { #[throws(LibraryLoadError)] pub fn load_catalogue(libname: &str, src: &mut dyn LibrarySource) -> Catalogue { + (||{ + let toplevel: toml::Value = src.catalogue_data().parse()?; let toplevel = toplevel .as_table().ok_or_else(|| LLE::ExpectedTable(format!("toplevel")))?; @@ -1028,7 +1033,11 @@ pub fn load_catalogue(libname: &str, src: &mut dyn LibrarySource) } } } - l + + Ok(l) + })().map_err( + |error| LLE::InLibrary { lib: libname.into(), error: Box::new(error) } + )? } //---------- reading, support functions ---------- -- 2.30.2