crappy ls

main
Ashelyn Dawn 3 years ago
parent 3196a63d1d
commit ba8f44c4c8

@ -2,6 +2,9 @@ use std::str::FromStr;
use crate::{Directory, State}; use crate::{Directory, State};
static PROJECTS_DIR: &'static str = "stuff";
static HOME_DIR: &'static str = "projects";
pub fn handle_command(command_string : String, state : &mut State) { pub fn handle_command(command_string : String, state : &mut State) {
let mut words = command_string.split(' '); let mut words = command_string.split(' ');
@ -21,8 +24,11 @@ pub fn handle_command(command_string : String, state : &mut State) {
Directory::Home => { Directory::Home => {
match args[0] { match args[0] {
"~" => (), "~" => (),
"~/" => (),
".." => state.output.push_back(String::from_str("bash: cd: ..: Permission denied").unwrap()), ".." => state.output.push_back(String::from_str("bash: cd: ..: Permission denied").unwrap()),
"../" => state.output.push_back(String::from_str("bash: cd: ..: Permission denied").unwrap()),
"projects" => state.current_working_directory = Directory::Projects, "projects" => state.current_working_directory = Directory::Projects,
"projects/" => state.current_working_directory = Directory::Projects,
_ => { _ => {
if args[0].chars().next().unwrap() == '/' { if args[0].chars().next().unwrap() == '/' {
state.output.push_back(format!("bash: cd: {}: Permission denied", args[0])); state.output.push_back(format!("bash: cd: {}: Permission denied", args[0]));
@ -35,7 +41,9 @@ pub fn handle_command(command_string : String, state : &mut State) {
Directory::Projects => { Directory::Projects => {
match args[0] { match args[0] {
"~" => state.current_working_directory = Directory::Home, "~" => state.current_working_directory = Directory::Home,
"~/" => state.current_working_directory = Directory::Home,
".." => state.current_working_directory = Directory::Home, ".." => state.current_working_directory = Directory::Home,
"../" => state.current_working_directory = Directory::Home,
_ => { _ => {
if args[0].chars().next().unwrap() == '/' { if args[0].chars().next().unwrap() == '/' {
state.output.push_back(format!("bash: cd: {}: Permission denied", args[0])); state.output.push_back(format!("bash: cd: {}: Permission denied", args[0]));
@ -50,6 +58,27 @@ pub fn handle_command(command_string : String, state : &mut State) {
} }
} }
"ls" => match state.current_working_directory {
Directory::Home => match args.len() {
0 => state.output.push_back(String::from_str(HOME_DIR).unwrap()),
1 => match args[0] {
"projects" => state.output.push_back(String::from_str(PROJECTS_DIR).unwrap()),
"projects/" => state.output.push_back(String::from_str(PROJECTS_DIR).unwrap()),
_ => state.output.push_back(format!("bash: ls: '{}': No such file or directory", args[0]))
},
_ => state.output.push_back(format!("bash: ls: too many arguments"))
},
Directory::Projects => match args.len() {
0 => state.output.push_back(String::from_str(PROJECTS_DIR).unwrap()),
1 => match args[0] {
".." => state.output.push_back(String::from_str(HOME_DIR).unwrap()),
"../" => state.output.push_back(String::from_str(HOME_DIR).unwrap()),
_ => state.output.push_back(format!("bash: ls: '{}': No such file or directory", args[0]))
},
_ => state.output.push_back(format!("bash: ls: too many arguments"))
}
}
_ => { _ => {
state.output.push_back(format!("bash: {}: command not found", command)); state.output.push_back(format!("bash: {}: command not found", command));
} }

Loading…
Cancel
Save