chiark / gitweb /
otterlib: load shapes
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 10 Jan 2021 15:59:50 +0000 (15:59 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 10 Jan 2021 23:19:44 +0000 (23:19 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Cargo.lock.example
Cargo.toml
src/bin/otterlib.rs
src/shapelib.rs

index 22a2e4a1d4fe93abcff5979a5602c3a2d35b4b1a..7e06f5b5930c072a9e2b29a64d6b82ef774ee83c 100644 (file)
@@ -1585,6 +1585,7 @@ dependencies = [
  "derive_more",
  "either",
  "enum-map",
+ "env_logger",
  "failure",
  "fehler",
  "flexi_logger",
index a34d1fde47d7788ddacf612fd46607c4a436eaef..650f2b46491cf347b853d8dbfad0eb69d3164d8d 100644 (file)
@@ -27,6 +27,7 @@ delegate = "0.5"
 derive_more = "0.99"
 either = "1"
 enum-map = { version = "0.6", features = [ "serde" ] }
+env_logger = "0.8"
 failure = "0.1.8" # for pwd
 fehler = "1"
 flexi_logger = { version = "0.16", features = [ "specfile" ] }
index bdefbd618af3a570a9969df903750391664dc749..277fe4b671d762a6d88a2759e60bd31bbcea8482 100644 (file)
@@ -4,6 +4,8 @@
 
 pub use otter::imports::*;
 
+pub use shapelib::*;
+
 use structopt::StructOpt;
 
 #[derive(Debug,Clone)]
@@ -19,9 +21,29 @@ pub struct Opts {
 #[throws(anyhow::Error)]
 fn main() {
   let opts = Opts::from_args();
-  let libs = shapelib::Config1::PathGlob(opts.libs.clone());
-  shapelib::load(&vec![libs])?;
-/*
+
+  env_logger::Builder::new()
+//    .format_timestamp_micros()
+//    .format_level(true)
+//    .filter_module(exe_module_path, log::LevelFilter::Debug)
+    .filter_level(log::LevelFilter::Info)
+    .parse_env("OTTERLIB_LOG")
+    .init();
+
+  let libs = Config1::PathGlob(opts.libs.clone());
+  load(&vec![libs.clone()])?;
+  let libnames = libs_list();
+  for lib in libnames {
+    let contents = libs_lookup(&lib)?;
+    let items = contents.list_glob(&opts.items)?;
+    dbg!(&items);
+    for item in items {
+      dbg!(&item);
+    }
+  }
+}
+  
+/* 
   let name = a.next().unwrap();
   let dirname = a.next().unwrap();
   let catalogue = format!("{}.toml", &dirname);
@@ -30,4 +52,4 @@ fn main() {
   };
   shapelib::load1(&e).unwrap();
 */
-}
+
index 3760e7ae7d24b43f795181705f3b83df0133f8a7..f93b1cdaadaa42b4fccea5f4fe072cb2d4fbdd51 100644 (file)
@@ -207,6 +207,13 @@ impl Piece for Item {
 
 static SHAPELIBS: RwLock<Option<Registry>> = const_rwlock(None);
 
+pub fn libs_list() -> Vec<String> {
+  let libs = SHAPELIBS.read();
+  libs.as_ref().map(
+    |l| l.keys().cloned().collect()
+  ).unwrap_or_default()
+}
+
 #[throws(SpecError)]
 pub fn libs_lookup(libname: &str)
                    -> MappedRwLockReadGuard<'static, Contents> {