Load identities

andybalholm
Mar 18, 2023, 2:35 AM
D467LQZ62MTKWYPTMRBYTTR63CZDCE5WGBIGLQMSWAQYPHC3XITAC

Dependencies

  • [2] YNZMKRJD include more information in log
  • [3] ATRA7XTT RIIR: factor out Repository struct
  • [*] RVRUZGHU Factor out load_channel function
  • [*] TQBJZLD7 RIIR: hello, world
  • [*] GKLDTVAK RIIR: add libpijul

Change contents

  • edit in rust/src/repo.rs at line 1
    [3.32]
    [3.33]
    use std::collections::HashMap;
    use std::env;
  • edit in rust/src/repo.rs at line 5
    [3.70]
    [3.70]
    use std::fs;
  • edit in rust/src/repo.rs at line 11
    [3.92]
    [2.41]
    use serde::Deserialize;
  • edit in rust/src/repo.rs at line 25
    [2.200]
    [3.229]
    identities: HashMap<String, String>,
  • edit in rust/src/repo.rs at line 48
    [3.570]
    [3.570]
    #[derive(Deserialize)]
    struct IdentityKey {
    key: String,
    }
    #[derive(Deserialize)]
    struct Identity {
    display_name: String,
    email: String,
    public_key: IdentityKey,
    }
  • edit in rust/src/repo.rs at line 69
    [3.819]
    [2.443]
    let mut identities: HashMap<String, String> = HashMap::new();
    Self::load_identities(&mut identities, &repo_path.join(".pijul/identities")).unwrap_or(());
    match env::var("HOME") {
    Ok(home) => {
    Self::load_identities(
    &mut identities,
    &Path::new(&home).join(".config/pijul/identities"),
    )
    .unwrap_or(());
    }
    Err(..) => {}
    }
  • edit in rust/src/repo.rs at line 85
    [2.522]
    [2.522]
    identities,
  • edit in rust/src/repo.rs at line 89
    [5.128]
    [5.128]
    fn load_identities(
    identities: &mut HashMap<String, String>,
    dir: &Path,
    ) -> Result<(), Box<dyn Error>> {
    let files = fs::read_dir(dir)?;
    for file in files {
    match fs::read_to_string(dir.join(file?.path()).join("identity.toml")) {
    Ok(content) => {
    let id: Identity = toml::from_str(&content)?;
    identities.insert(
    id.public_key.key,
    format!("{} <{}>", id.display_name, id.email),
    );
    }
    Err(..) => {}
    }
    }
    return Ok(());
    }
  • edit in rust/src/repo.rs at line 126
    [2.587]
    [2.587]
    if let Some(key) = a.0.get("key") {
    match self.identities.get(key) {
    Some(name) => {
    return name.to_string();
    }
    None => {
    return format!("{} <>", key);
    }
    }
    }
  • edit in rust/src/repo.rs at line 146
    [2.900][2.900:997]()
    }
    if let Some(key) = a.0.get("key") {
    return format!("{} <>", key);
  • edit in rust/Cargo.toml at line 12
    [7.26]
    serde = "1.0.156"
    toml = "0.5.11"
  • edit in rust/Cargo.lock at line 845
    [7.20481]
    [7.20481]
    "serde",
    "toml",