Very fake cd
parent
a4ecded355
commit
3196a63d1d
@ -0,0 +1,57 @@
|
||||
use std::str::FromStr;
|
||||
|
||||
use crate::{Directory, State};
|
||||
|
||||
pub fn handle_command(command_string : String, state : &mut State) {
|
||||
let mut words = command_string.split(' ');
|
||||
|
||||
let command = words.next().unwrap();
|
||||
let args = words.collect::<Vec<&str>>();
|
||||
|
||||
match command {
|
||||
"clear" => {
|
||||
state.output.clear();
|
||||
}
|
||||
|
||||
"cd" => {
|
||||
if args.len() == 0 {
|
||||
state.current_working_directory = Directory::Home;
|
||||
} else {
|
||||
match state.current_working_directory {
|
||||
Directory::Home => {
|
||||
match args[0] {
|
||||
"~" => (),
|
||||
".." => state.output.push_back(String::from_str("bash: cd: ..: Permission denied").unwrap()),
|
||||
"projects" => state.current_working_directory = Directory::Projects,
|
||||
_ => {
|
||||
if args[0].chars().next().unwrap() == '/' {
|
||||
state.output.push_back(format!("bash: cd: {}: Permission denied", args[0]));
|
||||
} else {
|
||||
state.output.push_back(format!("bash: cd: {}: No such file or directory", args[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
Directory::Projects => {
|
||||
match args[0] {
|
||||
"~" => state.current_working_directory = Directory::Home,
|
||||
".." => state.current_working_directory = Directory::Home,
|
||||
_ => {
|
||||
if args[0].chars().next().unwrap() == '/' {
|
||||
state.output.push_back(format!("bash: cd: {}: Permission denied", args[0]));
|
||||
} else {
|
||||
state.output.push_back(format!("bash: cd: {}: No such file or directory", args[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_ => {
|
||||
state.output.push_back(format!("bash: {}: command not found", command));
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue