chiark / gitweb /
otterlib: wip preview
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 11 Jan 2021 00:20:58 +0000 (00:20 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 11 Jan 2021 00:20:58 +0000 (00:20 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bin/otterlib.rs

index b419497d40f708075198cda009d42343cfc5916f..1fd052150e199337c313dd80bb87ea94f9dbe649 100644 (file)
@@ -24,6 +24,20 @@ pub struct Opts {
 #[derive(StructOpt,Debug,Clone,Copy)]
 pub enum OutputKind {
   List,
+  Preview,
+}
+
+pub type ItemForOutput = (String, ItemEnquiryData);
+
+#[throws(AE)]
+fn preview(items: Vec<ItemForOutput>) {
+  let pieces = items.into_iter().map(|it| {
+    let spec = ItemSpec { lib: it.0, item: it.1.itemname };
+    spec.clone().load()
+      .with_context(|| format!("{:?}", &spec))
+  })
+    .collect::<Result<Vec<Box<dyn Piece>>,AE>>()?;
+  dbg!(&pieces);
 }
 
 #[throws(anyhow::Error)]
@@ -40,7 +54,7 @@ fn main() {
 
   let libs = Config1::PathGlob(opts.libs.clone());
   load(&vec![libs.clone()])?;
-  let mut items : Vec<(String, ItemEnquiryData)> =
+  let mut items : Vec<ItemForOutput> =
     libs_list()
     .into_iter()
     .map(|lib| {
@@ -60,6 +74,9 @@ fn main() {
     OutputKind::List => for item in &items {
       println!("{:<10} {}", &item.0, item.1.line_for_list());
     }
+    OutputKind::Preview => {
+      preview(items)?
+    }
   }
 }