use rpassword::read_password;
use std::env;
use std::error::Error;
use std::io::{self, Write};
use std::path::PathBuf;
pub fn get_user_data_dir() -> Result<PathBuf, Box<dyn Error>> {
let home_dir = env::var("HOME").or_else(|_| env::var("USERPROFILE"))?;
#[cfg(target_os = "linux")]
let base_path = ".local/share/kuvpn/profile";
#[cfg(target_os = "macos")]
let base_path = "Library/Application Support/kuvpn/profile";
#[cfg(target_os = "windows")]
let base_path = "AppData/Roaming/kuvpn/profile";
let user_data_dir = PathBuf::from(format!("{}/{}", home_dir, base_path));
if !user_data_dir.exists() {
std::fs::create_dir_all(&user_data_dir)?;
log::info!("User data directory created at: {:?}", user_data_dir);
}
Ok(user_data_dir)
}
pub fn js_escape(s: &str) -> String {
s.replace("\\", "\\\\").replace("'", "\\'")
}
pub fn prompt_text(msg: &str) -> String {
print!("{}", msg);
io::stdout().flush().unwrap();
let mut input = String::new();
io::stdin().read_line(&mut input).unwrap();
input.trim().to_owned()
}
pub fn prompt_password(msg: &str) -> String {
print!("{}", msg);
io::stdout().flush().unwrap();
read_password().unwrap()
}