t-rust-less-lib 0.2.18

Password manager library
Documentation
use std::fs;
use std::io::ErrorKind;

fn main() -> Result<(), Box<dyn std::error::Error>> {
  let secrets_store_src = fs::metadata("src/secrets_store.capnp")?;

  let rebuild_secrets_store = match fs::metadata("src/secrets_store_capnp.rs") {
    Ok(target) => target.modified()? < secrets_store_src.modified()?,
    Err(error) => match error.kind() {
      ErrorKind::NotFound => true,
      _ => return Err(error.into()),
    },
  };

  if rebuild_secrets_store {
    print!("Building store");
    if let Err(err) = capnpc::CompilerCommand::new()
      .file("src/secrets_store.capnp")
      .output_path(".")
      .run()
    {
      return Err(format!("{}", err).into());
    }
  }

  Ok(())
}