use crate::poem::{read::Readable, recite::Reciteable, Poem}; use std::fs; use std::path::PathBuf; pub fn env() { // Use local repo path if running the debug target let global_rc = if cfg!(debug_assertions) { let mut base = PathBuf::from(env!("CARGO_MANIFEST_DIR")); base.push("dist/etc/dwvshrc"); base } else { PathBuf::from("/etc/dwvshrc") }; // User defined rc file in ~ let mut local_rc = PathBuf::from(env!("HOME")); local_rc.push(".dwvshrc"); // Read, read, and recite rrr(global_rc); rrr(local_rc); } fn rrr(path: PathBuf) { let poetry = match fs::read_to_string(&path) { Ok(poetry) => poetry, Err(e) => { if path.to_string_lossy().contains("etc/dwvshrc") { eprintln!( "dwvsh: unable to read global dwvshrc file: {}", e.to_string().to_lowercase() ); } return; } }; let poem = match Poem::read(poetry) { Ok(poem) => poem, Err(e) => { eprintln!( "dwvsh: error in {}: {}", path.display(), e.to_string().to_lowercase() ); return; } }; let mut bins = vec![]; match poem.recite(&mut bins, None) { Ok(_) => {} Err(e) => { eprintln!("dwvsh: {}", e.to_string().to_lowercase()); return; } } }