2024-07-07 03:42:11 +03:00
|
|
|
use std::{env, fs::File, io::Read};
|
|
|
|
|
2024-07-08 01:20:42 +03:00
|
|
|
use crate::{Config, Runner, RunnerMode};
|
2024-07-07 03:42:11 +03:00
|
|
|
|
2024-07-08 01:20:42 +03:00
|
|
|
pub fn take_args() -> Option<RunnerMode> {
|
2024-07-07 03:42:11 +03:00
|
|
|
let args: Vec<String> = env::args().collect();
|
|
|
|
if args.len() > 1 {
|
2024-07-08 01:20:42 +03:00
|
|
|
let runner = match &args[1][..] {
|
|
|
|
"--server" => Runner::Server,
|
|
|
|
"--client" => Runner::Client,
|
|
|
|
_ => return None,
|
|
|
|
};
|
|
|
|
let debug = if args.len() > 2 {
|
|
|
|
match &args[2][..] {
|
|
|
|
"--debug" => true,
|
|
|
|
_ => return None,
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
false
|
|
|
|
};
|
|
|
|
Some(RunnerMode::State(runner, debug))
|
2024-07-07 03:42:11 +03:00
|
|
|
} else {
|
|
|
|
None
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn read_config() -> Option<Config> {
|
|
|
|
let mut config_file = match File::open("configs/config.txt") {
|
|
|
|
Ok(config_file) => config_file,
|
|
|
|
Err(_) => return None,
|
|
|
|
};
|
|
|
|
let mut configs = String::new();
|
|
|
|
match config_file.read_to_string(&mut configs) {
|
|
|
|
Ok(_) => {
|
|
|
|
let configs: Vec<String> = configs.split('\n').map(|x| x.to_string()).collect();
|
|
|
|
let server_address = match configs[0].split(':').last() {
|
|
|
|
Some(server_address_unchecked) => match server_address_unchecked.parse() {
|
|
|
|
Ok(server_address) => server_address,
|
|
|
|
Err(_) => return None,
|
|
|
|
},
|
|
|
|
None => return None,
|
|
|
|
};
|
|
|
|
let port = match configs[1].split(':').last() {
|
|
|
|
Some(port_unchecked) => match port_unchecked.parse() {
|
|
|
|
Ok(port) => port,
|
|
|
|
Err(_) => return None,
|
|
|
|
},
|
|
|
|
None => return None,
|
|
|
|
};
|
|
|
|
Some(Config {
|
|
|
|
server_address,
|
|
|
|
port,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
Err(_) => None,
|
|
|
|
}
|
|
|
|
}
|