diff --git a/src/ls.rs b/src/ls.rs new file mode 100644 index 0000000..dbbdfaa --- /dev/null +++ b/src/ls.rs @@ -0,0 +1,36 @@ +use std::env; +use std::fs; + +fn main(){ + let args: Vec = env::args().collect(); + let pwd = env::current_dir().unwrap(); + let mut show_hidden = false; + if args.len() == 1 { + list_dir(pwd.display().to_string(), show_hidden); + } else { + for arg in 1..args.len() { + match args[arg].as_str() { + "--help" => { + println!("List files in directory"); + }, + "-a" | "--all" => { + show_hidden = true; + }, + arg => { + list_dir(arg.to_string(), show_hidden); + }, + } + } + } +} +fn list_dir(arg: String, show_hidden: bool) { + let files = fs::read_dir(arg.clone()).unwrap(); + for entry in files { + let path = entry.unwrap().path(); + let file = path.strip_prefix(arg.clone()); + if file.clone().unwrap().display().to_string().starts_with('.') && !show_hidden{ + continue; + } + println!("{}", file.unwrap().display()); + } +} diff --git a/src/mkdir.rs b/src/mkdir.rs index 7c3833a..15e26b4 100644 --- a/src/mkdir.rs +++ b/src/mkdir.rs @@ -9,16 +9,16 @@ fn main(){ "--help" => { println!("Usage: mkdir [OPTIONS] DIRECTORY"); return; - } + }, "-v" | "--verbose" => { verbose_flag = true; - } + }, arg => { fs::create_dir_all(arg.to_string()); if verbose_flag { println!("mkdir: created directory '{}'", arg); } - } + }, } } }