diff options
author | Ben Morrison <ben@gbmor.dev> | 2020-05-26 20:20:36 -0400 |
---|---|---|
committer | Ben Morrison <ben@gbmor.dev> | 2020-05-26 23:52:52 -0400 |
commit | 16fbf516e3b28d19570dd6e93e63b0efb9c249ff (patch) | |
tree | 4d31f7a98bd7527820a1cbe8f5cae74eab89b1b6 | |
parent | 7d132af9766a64e8403950fee46491db45598112 (diff) | |
download | clinte-16fbf516e3b28d19570dd6e93e63b0efb9c249ff.tar.gz |
moved check for val of $EDITOR into ed::call()
Also removed some allocations from call() in the form of unnecessary string clones.
-rw-r--r-- | src/ed.rs | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/src/ed.rs b/src/ed.rs index fa6d43b..0e1c4c8 100644 --- a/src/ed.rs +++ b/src/ed.rs @@ -7,22 +7,6 @@ use chrono::prelude::*; use crate::error; use crate::user; -lazy_static! { - static ref VAR: String = match env::var("EDITOR") { - Ok(ed) => { - if &ed == "" { - "nano".into() - } else { - ed - } - } - Err(err) => { - log::warn!("{:?}", err); - "nano".into() - } - }; -} - fn create_tmp_file<'a>() -> Result<String, &'a str> { let the_time = Utc::now().to_rfc3339(); let file_name = format!("/tmp/clinte_ed_{}_{}", *user::NAME, the_time); @@ -36,17 +20,33 @@ fn create_tmp_file<'a>() -> Result<String, &'a str> { } pub fn call() -> String { + // If they don't have $EDITOR set, just default to nano + // instead of assuming vim or emacs. + let editor = match env::var("EDITOR") { + Ok(ed) => { + if &ed == "" { + "nano".into() + } else { + ed + } + } + Err(_) => { + log::warn!("Couldn't get value of $EDITOR, defaulting to nano"); + "nano".into() + } + }; + let tmp_loc = error::helper(create_tmp_file()); error::helper( - process::Command::new(VAR.clone()) - .arg(tmp_loc.clone()) + process::Command::new(editor) + .arg(&tmp_loc) .stdin(process::Stdio::inherit()) .stdout(process::Stdio::inherit()) .output(), ); - let body = error::helper(fs::read_to_string(tmp_loc.clone())); + let body = error::helper(fs::read_to_string(&tmp_loc)); error::helper(fs::remove_file(tmp_loc)); body } |