chiark / gitweb /
otter: Dedup library items before adding them
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 May 2021 22:53:01 +0000 (23:53 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 May 2021 23:32:13 +0000 (00:32 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bin/otter.rs

index db65a6b79d000aa96666bd70a331f8ed6ba3c9de..ea809ab0dba36d0568fafce33bfd8f7603dc36f2 100644 (file)
@@ -1261,7 +1261,16 @@ mod library_add {
       }
     }
 
-    let items = chan.list_items(args.tlg.lib(), args.tlg.pat())?;
+    let mut items = chan.list_items(args.tlg.lib(), args.tlg.pat())?;
+
+    fn k(ied: &ItemEnquiryData) -> (&str, &GoodItemName) { (
+      &ied.lib.libname,
+      &ied.itemname,
+    ) }
+    items.sort_by(|a,b| Ord::cmp( &k(a), &k(b) ));
+    items.reverse();
+    items.dedup_by(|a,b| PartialEq::eq( &k(a), &k(b) ));
+    items.reverse();
 
     let mut exitcode = 0;
     let mut insns = vec![];