feat: added help menu
refactor: debug_mode
This commit is contained in:
parent
bea5b1d6d9
commit
06b27b4585
1 changed files with 42 additions and 41 deletions
83
src/main.rs
83
src/main.rs
|
@ -16,7 +16,7 @@ struct UserEnvironment
|
||||||
server:bool,
|
server:bool,
|
||||||
send:bool,
|
send:bool,
|
||||||
location:Option<String>,
|
location:Option<String>,
|
||||||
debug:DebugMode,
|
debug:bool,
|
||||||
}
|
}
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
struct FileInfo
|
struct FileInfo
|
||||||
|
@ -339,32 +339,6 @@ impl FileInfo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#[derive(Debug)]
|
|
||||||
enum DebugMode
|
|
||||||
{
|
|
||||||
On,
|
|
||||||
Off
|
|
||||||
}
|
|
||||||
impl DebugMode {
|
|
||||||
fn debug_mode(&self) -> bool
|
|
||||||
{
|
|
||||||
match self
|
|
||||||
{
|
|
||||||
DebugMode::On =>
|
|
||||||
{
|
|
||||||
println!("Debug: ON");
|
|
||||||
let debug = true;
|
|
||||||
debug
|
|
||||||
}
|
|
||||||
DebugMode::Off =>
|
|
||||||
{
|
|
||||||
println!("Debug: OFF");
|
|
||||||
let debug = false;
|
|
||||||
debug
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
enum Connection
|
enum Connection
|
||||||
{
|
{
|
||||||
Server(String, String),
|
Server(String, String),
|
||||||
|
@ -373,10 +347,10 @@ enum Connection
|
||||||
|
|
||||||
impl Connection
|
impl Connection
|
||||||
{
|
{
|
||||||
fn server(self, file_info:&mut FileInfo, debug_mode:bool, user_environment:&UserEnvironment)
|
fn server(self, file_info:&mut FileInfo, user_environment:&UserEnvironment)
|
||||||
{
|
{
|
||||||
print!("Server -> ");
|
print!("Server -> ");
|
||||||
if debug_mode
|
if user_environment.debug
|
||||||
{
|
{
|
||||||
println!("{:#?}", user_environment);
|
println!("{:#?}", user_environment);
|
||||||
println!("{:#?}", file_info);
|
println!("{:#?}", file_info);
|
||||||
|
@ -403,7 +377,7 @@ impl Connection
|
||||||
Ok(mut stream) =>
|
Ok(mut stream) =>
|
||||||
{
|
{
|
||||||
println!("Connected");
|
println!("Connected");
|
||||||
send_or_receive(file_info, &mut stream, &debug_mode, user_environment);
|
send_or_receive(file_info, &mut stream, &user_environment.debug, user_environment);
|
||||||
}
|
}
|
||||||
Err(e) =>
|
Err(e) =>
|
||||||
{
|
{
|
||||||
|
@ -413,10 +387,10 @@ impl Connection
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn client(self, file_info:&mut FileInfo, debug_mode:bool, user_environment:&UserEnvironment)
|
fn client(self, file_info:&mut FileInfo, user_environment:&UserEnvironment)
|
||||||
{
|
{
|
||||||
print!("Client -> ");
|
print!("Client -> ");
|
||||||
if debug_mode
|
if user_environment.debug
|
||||||
{
|
{
|
||||||
println!("{:#?}", user_environment);
|
println!("{:#?}", user_environment);
|
||||||
println!("{:#?}", file_info);
|
println!("{:#?}", file_info);
|
||||||
|
@ -440,7 +414,7 @@ impl Connection
|
||||||
Ok(mut stream) =>
|
Ok(mut stream) =>
|
||||||
{
|
{
|
||||||
println!("Connected");
|
println!("Connected");
|
||||||
send_or_receive(file_info, &mut stream, &debug_mode, user_environment);
|
send_or_receive(file_info, &mut stream, &user_environment.debug, user_environment);
|
||||||
}
|
}
|
||||||
Err(e) =>
|
Err(e) =>
|
||||||
{
|
{
|
||||||
|
@ -470,13 +444,13 @@ fn send_or_receive(file_info:&mut FileInfo, stream:&mut TcpStream, debug_mode:&b
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn take_args(user_environment:&mut UserEnvironment)
|
fn take_args(user_environment:&mut UserEnvironment) -> bool
|
||||||
{
|
{
|
||||||
let env_args:Vec<String> = env::args().collect();
|
let env_args:Vec<String> = env::args().collect();
|
||||||
if env_args.len() > 15
|
if env_args.len() > 16
|
||||||
{
|
{
|
||||||
println!("Error: Too Many Arguments, You Gave {} Arguments", env_args.len());
|
println!("Error: Too Many Arguments, You Gave {} Arguments", env_args.len());
|
||||||
panic!();
|
return false;
|
||||||
}
|
}
|
||||||
let mut i = 1;
|
let mut i = 1;
|
||||||
while i < env_args.len()
|
while i < env_args.len()
|
||||||
|
@ -516,15 +490,39 @@ fn take_args(user_environment:&mut UserEnvironment)
|
||||||
}
|
}
|
||||||
"--debug" =>
|
"--debug" =>
|
||||||
{
|
{
|
||||||
user_environment.debug = DebugMode::On;
|
user_environment.debug = false;
|
||||||
|
}
|
||||||
|
"--help" =>
|
||||||
|
{
|
||||||
|
show_help();
|
||||||
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
err =>
|
err =>
|
||||||
{
|
{
|
||||||
println!("Error: Invalid Argument, You Gave {}", err);
|
println!("Error: Invalid Argument, You Gave {}", err);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
|
true
|
||||||
|
}
|
||||||
|
fn show_help()
|
||||||
|
{
|
||||||
|
println!("\n\n\n");
|
||||||
|
println!(" Arguments | Details | Defaults");
|
||||||
|
println!("--------------------------------------------------------------");
|
||||||
|
println!(" --ip | Specify IP Address | 127.0.0.1");
|
||||||
|
println!(" --port | Specify Port Address | 2121");
|
||||||
|
println!(" --location | Specify Location Address | Same as Program");
|
||||||
|
println!(" --server | Start as a Server | False");
|
||||||
|
println!(" --client | Start as a Client | True");
|
||||||
|
println!(" --send | Start as a Sender | False");
|
||||||
|
println!(" --receive | Start as a Receiver | True");
|
||||||
|
println!(" --debug | Start in Debug Mode | False");
|
||||||
|
println!(" --help | Shows Help | False");
|
||||||
|
println!("\n\n\n");
|
||||||
}
|
}
|
||||||
fn main()
|
fn main()
|
||||||
{
|
{
|
||||||
|
@ -539,9 +537,12 @@ fn main()
|
||||||
server:false,
|
server:false,
|
||||||
send:false,
|
send:false,
|
||||||
location:None,
|
location:None,
|
||||||
debug:DebugMode::Off,
|
debug:false,
|
||||||
};
|
};
|
||||||
take_args(&mut user_environment);
|
if !take_args(&mut user_environment)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
let mut file_info = FileInfo
|
let mut file_info = FileInfo
|
||||||
{
|
{
|
||||||
file:None,
|
file:None,
|
||||||
|
@ -555,13 +556,13 @@ fn main()
|
||||||
{
|
{
|
||||||
Connection::server
|
Connection::server
|
||||||
(Connection::Server(user_environment.ip.to_string(), user_environment.port.to_string()),
|
(Connection::Server(user_environment.ip.to_string(), user_environment.port.to_string()),
|
||||||
&mut file_info, DebugMode::debug_mode(&user_environment.debug), &user_environment);
|
&mut file_info, &user_environment);
|
||||||
},
|
},
|
||||||
false =>
|
false =>
|
||||||
{
|
{
|
||||||
Connection::client
|
Connection::client
|
||||||
(Connection::Client(user_environment.ip.to_string(), user_environment.port.to_string()),
|
(Connection::Client(user_environment.ip.to_string(), user_environment.port.to_string()),
|
||||||
&mut file_info, DebugMode::debug_mode(&user_environment.debug), &user_environment);
|
&mut file_info, &user_environment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue