From 0f6bd3337aaeed46859018e3878dd49cd89d194b Mon Sep 17 00:00:00 2001 From: Justine Date: Sun, 19 Feb 2023 20:32:17 +0100 Subject: [PATCH] Fixed history and cd without args --- Cargo.lock | 2 +- src/lib.rs | 21 ++++++++++----------- src/shell/autocomplete.rs | 1 + src/shell/history.rs | 6 +++--- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c23d06d..f8c422e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -175,7 +175,7 @@ checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" [[package]] name = "sqish" -version = "0.1.0" +version = "1.0.0" dependencies = [ "dirs", "gethostname", diff --git a/src/lib.rs b/src/lib.rs index 692fbe5..88c6b63 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -45,7 +45,8 @@ pub mod shell { match command { "cd" => { - let new_dir = args.peekable().peek().map_or("/", |x| *x); + let homedir = dirs::home_dir().unwrap().into_os_string().into_string().unwrap(); + let new_dir = args.peekable().peek().map_or(homedir.as_str(), |x| *x); let root = Path::new(new_dir); if let Err(e) = env::set_current_dir(&root) { eprintln!(" Err: {}", e); @@ -113,8 +114,7 @@ pub mod shell { .expect("Could not get retcode") .to_string(); previous_command = None; - let format_res = format!("{}...Exit: {}\r\n", - color::Fg(color::Cyan), + let format_res = format!("{}", status); let _ = &mut resultat.push_str(&format_res); } @@ -218,14 +218,14 @@ pub mod shell { if (mycommand != &String::from("\n")) && (mycommand != &String::from("exit")) { let comm = replace_signs(&mycommand); RawTerminal::suspend_raw_mode(&stdout); - let _res = handle_input(&comm); + let res = handle_input(&comm); RawTerminal::activate_raw_mode(&stdout); mycommand.clear(); - //for line in res.split('\n') { - // if line != "\r" { - // write!(stdout, "\r\n{}", line); - // } - //} + for line in res.split('\n') { + if line != "\r" { + write!(stdout, "\r\n{}", line); + } + } conf.update_prompt(get_curr_history_number()); write!(stdout, "\r\n{}", conf.promptline).unwrap(); stdout.flush(); @@ -314,7 +314,7 @@ pub mod shell { for c in stdin.keys() { let k = c.unwrap(); match k { - Key::Char('\t') => { + Key::Char('\t') => { //Do NOT search on an empty command if *&mycommand.len() == 0 { continue; @@ -330,7 +330,6 @@ pub mod shell { write!(stdout, "\r\n{}{}", conf.promptline, res); stdout.flush(); } - Key::Char('\n') => { current_pos = 0; max_pos = 0; diff --git a/src/shell/autocomplete.rs b/src/shell/autocomplete.rs index 1e3dfb5..cd52a3c 100644 --- a/src/shell/autocomplete.rs +++ b/src/shell/autocomplete.rs @@ -289,3 +289,4 @@ fn find_common_chars(mut strvec: Vec) -> String { } + diff --git a/src/shell/history.rs b/src/shell/history.rs index 78dd789..e8de9f4 100644 --- a/src/shell/history.rs +++ b/src/shell/history.rs @@ -7,7 +7,7 @@ use std::io::{prelude::*, BufReader}; pub fn write_to_history(command: &str) -> Result<(), std::io::Error> { //Write a command to history - let filepath = dirs::home_dir().unwrap().join("history.sqish"); + let filepath = dirs::home_dir().unwrap().join(".history.sqish"); let mut file = OpenOptions::new() .write(true) .append(true) @@ -26,7 +26,7 @@ pub fn write_to_history(command: &str) -> Result<(), std::io::Error> { pub fn get_history_number() -> Result { //Get the latest number found in history file - let filepath = dirs::home_dir().unwrap().join("history.sqish"); + let filepath = dirs::home_dir().unwrap().join(".history.sqish"); let file = File::open(filepath)?; let reader = BufReader::new(file).lines(); let myline = String::from(reader.last().unwrap_or(Ok(String::from("1")))?); @@ -59,7 +59,7 @@ pub fn get_history() -> Result { pub fn get_hist_from_number(number: &i32) -> Option { //Returns a command from its number in hist file - let filepath = dirs::home_dir().unwrap().join("history.sqish"); + let filepath = dirs::home_dir().unwrap().join(".history.sqish"); if filepath.exists() == false { return None;