2016-10-03 06:44:35 -07:00
|
|
|
use std::net;
|
2016-10-02 18:01:46 -07:00
|
|
|
use clap;
|
2016-10-03 07:29:07 -07:00
|
|
|
use message::common::Magic;
|
2016-10-02 18:01:46 -07:00
|
|
|
|
2016-10-03 06:44:35 -07:00
|
|
|
pub struct Config {
|
2016-10-02 18:01:46 -07:00
|
|
|
pub magic: Magic,
|
|
|
|
pub port: u16,
|
2016-11-02 00:25:09 -07:00
|
|
|
pub connect: Option<net::SocketAddr>,
|
2016-10-25 00:55:43 -07:00
|
|
|
pub seednode: Option<String>,
|
2016-10-03 06:44:35 -07:00
|
|
|
pub print_to_console: bool,
|
2016-10-27 07:26:12 -07:00
|
|
|
pub use_disk_database: bool,
|
2016-10-02 18:01:46 -07:00
|
|
|
}
|
|
|
|
|
2016-10-03 06:44:35 -07:00
|
|
|
pub fn parse(matches: &clap::ArgMatches) -> Result<Config, String> {
|
|
|
|
let print_to_console = matches.is_present("printtoconsole");
|
2016-10-27 07:26:12 -07:00
|
|
|
let use_disk_database = matches.is_present("diskdb");
|
2016-10-02 18:01:46 -07:00
|
|
|
let magic = match matches.is_present("testnet") {
|
|
|
|
true => Magic::Testnet,
|
|
|
|
false => Magic::Mainnet,
|
|
|
|
};
|
|
|
|
|
|
|
|
let port = match matches.value_of("port") {
|
|
|
|
Some(port) => try!(port.parse().map_err(|_| "Invalid port".to_owned())),
|
2016-10-03 06:44:35 -07:00
|
|
|
None => magic.port(),
|
|
|
|
};
|
|
|
|
|
|
|
|
let connect = match matches.value_of("connect") {
|
2016-11-02 00:25:09 -07:00
|
|
|
Some(s) => Some(try!(match s.parse::<net::SocketAddr>() {
|
|
|
|
Err(_) => s.parse::<net::IpAddr>()
|
|
|
|
.map(|ip| net::SocketAddr::new(ip, magic.port()))
|
|
|
|
.map_err(|_| "Invalid connect".to_owned()),
|
|
|
|
Ok(a) => Ok(a),
|
|
|
|
})),
|
2016-10-03 06:44:35 -07:00
|
|
|
None => None,
|
|
|
|
};
|
|
|
|
|
|
|
|
let seednode = match matches.value_of("seednode") {
|
|
|
|
Some(s) => Some(try!(s.parse().map_err(|_| "Invalid seednode".to_owned()))),
|
|
|
|
None => None,
|
2016-10-02 18:01:46 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
let config = Config {
|
2016-10-03 06:44:35 -07:00
|
|
|
print_to_console: print_to_console,
|
2016-10-02 18:01:46 -07:00
|
|
|
magic: magic,
|
|
|
|
port: port,
|
2016-10-03 06:44:35 -07:00
|
|
|
connect: connect,
|
|
|
|
seednode: seednode,
|
2016-10-27 07:26:12 -07:00
|
|
|
use_disk_database: use_disk_database,
|
2016-10-02 18:01:46 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
Ok(config)
|
|
|
|
}
|