diff --git a/src/software.rs b/src/software.rs index 4098c76..e520465 100644 --- a/src/software.rs +++ b/src/software.rs @@ -3,18 +3,16 @@ use alloc::string::String; use alloc::vec::Vec; use crate::alloc::string::ToString; +use crate::software::calc::calc; + +pub mod calc; + pub fn command_func(input_command: String) { let mut command = String::new(); - let mut args = String::new(); - let mut command_vec: Vec<&str> = input_command.split(" ").collect(); - command = command_vec[0].to_string(); - command_vec.remove(0); - for i in command_vec { - for j in i.chars() { - args.push(j); - } - args.push(' '); - } + let mut args_vec: Vec<&str> = input_command.split(" ").collect(); + command = args_vec[0].to_string(); + args_vec.remove(0); + match command.as_str() { "hi" => { println!("hello command!!!"); @@ -23,6 +21,13 @@ pub fn command_func(input_command: String) { println!("wow!!"); } "echo" => { + let mut args = String::new(); + for i in args_vec { + for j in i.chars() { + args.push(j); + } + args.push(' '); + } println!("{} ", args); } "asciiart" => { @@ -33,6 +38,9 @@ pub fn command_func(input_command: String) { println!(" | |__| | | \\ \\| |__| |____) |"); println!(" \\_____|_| \\_\\\\____/|_____/ "); } + "calc" => { + calc(args_vec); + } command => { println!("{}: command not found", command); } diff --git a/src/software/calc.rs b/src/software/calc.rs new file mode 100644 index 0000000..623bc9f --- /dev/null +++ b/src/software/calc.rs @@ -0,0 +1,28 @@ +use alloc::string::String; +use alloc::vec::Vec; +use crate::println; + +pub fn calc(args: Vec<&str>) { + if args.len() < 3 || args.len() > 3 { + println!("Not enought or too much arguments"); + return; + } + let arg1: i32 = args[0].parse().unwrap(); + let arg2: i32 = args[2].parse().unwrap(); + let operation = args[1]; + if arg2 == 0 && operation == "/" { + println!("Divide by zero"); + return; + } else if arg2 == 0 && operation == "%" { + println!("Modulo by zero"); + return; + } + match args[1] { + "+" => {println!("{}", arg1+arg2)}, + "-" => {println!("{}", arg1-arg2)}, + "*" => {println!("{}", arg1*arg2)}, + "/" => {println!("{}", arg1/arg2)}, + "%" => {println!("{}", arg1%arg2)}, + arg => {println!("Someting went wrong")}, + } +} \ No newline at end of file