about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorBen Morrison <ben@gbmor.dev>2020-05-26 23:27:58 -0400
committerBen Morrison <ben@gbmor.dev>2020-05-26 23:54:18 -0400
commit896f987f2705d1c5152d6c0741c377e3612f048a (patch)
treef6ed5a1b861c9d3e7a2c474084bc4afb6384190a
parentc3c1db696f3b04e4aef06fd2b01e436b1fe06b08 (diff)
downloadclinte-896f987f2705d1c5152d6c0741c377e3612f048a.tar.gz
prepopulating editor with post body when editing
-rw-r--r--src/ed.rs7
-rw-r--r--src/posts.rs6
2 files changed, 9 insertions, 4 deletions
diff --git a/src/ed.rs b/src/ed.rs
index 095fd9a..7d52909 100644
--- a/src/ed.rs
+++ b/src/ed.rs
@@ -16,7 +16,7 @@ fn create_tmp_file<'a>() -> Result<String, std::io::Error> {
     }
 }
 
-pub fn call() -> String {
+pub fn call(body: &str) -> String {
     // If they don't have $EDITOR set, just default to nano
     // instead of assuming vim or emacs.
     let editor = match env::var("EDITOR") {
@@ -36,6 +36,11 @@ pub fn call() -> String {
     let tmp_loc = error::helper(create_tmp_file(), "Couldn't create tempfile");
 
     error::helper(
+        fs::write(&tmp_loc, body),
+        "Couldn't populate tempfile with message",
+    );
+
+    error::helper(
         process::Command::new(editor)
             .arg(&tmp_loc)
             .stdin(process::Stdio::inherit())
diff --git a/src/posts.rs b/src/posts.rs
index f625a90..76a5187 100644
--- a/src/posts.rs
+++ b/src/posts.rs
@@ -51,7 +51,7 @@ pub fn create(db: &db::Conn) -> error::Result<()> {
 
     println!();
 
-    let body_raw = str_to_utf8(&ed::call());
+    let body_raw = str_to_utf8(&ed::call(""));
     let body = if body_raw.len() > 500 {
         &body_raw[..500]
     } else {
@@ -136,12 +136,12 @@ pub fn update_handler(db: &db::Conn, id: u32) -> error::Result<()> {
 
     println!("Updating post {}", id_num_in);
     println!();
-    println!("Title: {}\n\nBody: {}", row[0], row[2]);
+    println!("Current Title: {}", &row[0]);
     println!();
     println!("Enter new title:");
     io::stdin().read_line(&mut new_title)?;
 
-    let body_raw = str_to_utf8(&ed::call());
+    let body_raw = str_to_utf8(&ed::call(&row[2]));
     let body = if body_raw.len() > 500 {
         &body_raw[..500]
     } else {