From d494175faae7b8f63cca887478f14ed13671d2ab Mon Sep 17 00:00:00 2001 From: issak Date: Wed, 28 Sep 2022 01:33:04 +0800 Subject: [PATCH] feat: add support for windows(env path) --- src/network/secure.rs | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/src/network/secure.rs b/src/network/secure.rs index ddc69e3..349d0c2 100644 --- a/src/network/secure.rs +++ b/src/network/secure.rs @@ -3,6 +3,7 @@ use std::fs::OpenOptions; use std::io::BufReader; use std::io::BufWriter; use std::env; +use std::path::Path; use colorful::Colorful; use colorful::Color; use libp2p::identity; @@ -17,14 +18,20 @@ pub fn new_secret_key() -> Result<(), Box> { let s = format!("{}", secret_key.display_secret()); println!("{}", s); - let home_path = env::var("HOME").unwrap(); - std::fs::create_dir_all(format!("{}{}", home_path, "/.tochat"))?; + let home_path = match env::var("HOME") { + Ok(path) => path, + Err(_) => env::var("HOMEPATH").unwrap(), + }; + let tochat_path = Path::new("/.tochat").to_string_lossy(); + std::fs::create_dir_all(format!("{}{}", home_path, tochat_path))?; + + let secret_path = Path::new("/.tochat/secret.json").to_string_lossy(); let buf = BufWriter::new( OpenOptions::new() .write(true) .create(true) - .open(format!("{}{}", home_path, "/.tochat/secret.json"))?); + .open(format!("{}{}", home_path, secret_path))?); serde_json::to_writer_pretty(buf, &s).unwrap(); Ok(()) } @@ -36,24 +43,35 @@ pub fn generate_ed25519(key: &String) -> identity::Keypair { } pub fn get_secret() -> String { - let home_path = env::var("HOME").unwrap(); + let home_path = match env::var("HOME") { + Ok(path) => path, + Err(_) => env::var("HOMEPATH").unwrap(), + }; + + let secret_path = Path::new("/.tochat/secret.json").to_string_lossy(); let buf = BufReader::new( OpenOptions::new() .read(true) - .open(format!("{}{}", home_path, "/.tochat/secret.json")) + .open(format!("{}{}", home_path, secret_path)) .expect("Please create or import a secret key")); serde_json::from_reader(buf).unwrap() } pub fn import_secret(key: &String) -> Result<(), Box> { - let home_path = env::var("HOME").unwrap(); - std::fs::create_dir_all(format!("{}{}", home_path, "/.tochat"))?; + let home_path = match env::var("HOME") { + Ok(path) => path, + Err(_) => env::var("HOMEPATH").unwrap(), + }; + + let tochat_path = Path::new("/.tochat").to_string_lossy(); + std::fs::create_dir_all(format!("{}{}", home_path, tochat_path))?; + let secret_path = Path::new("/.tochat/secret.json").to_string_lossy(); let buf = BufWriter::new( OpenOptions::new() .write(true) .create(true) - .open(format!("{}{}", home_path, "/.tochat/secret.json"))?); + .open(format!("{}{}", home_path, secret_path))?); serde_json::to_writer_pretty(buf, key).unwrap(); Ok(()) } \ No newline at end of file