This commit is contained in:
parent
1e8f9da839
commit
794f5baee3
52
node/src/args.rs
Normal file
52
node/src/args.rs
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
use std::net::SocketAddr;
|
||||||
|
use std::net::ToSocketAddrs;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
use std::io;
|
||||||
|
|
||||||
|
use structopt::StructOpt;
|
||||||
|
|
||||||
|
pub const DEFAULT_PORT: u16 = 8443;
|
||||||
|
const DEFAULT_PORT_STR: &str = "8443";
|
||||||
|
|
||||||
|
#[derive(Debug, StructOpt)]
|
||||||
|
pub enum Args {
|
||||||
|
/// Run the node
|
||||||
|
Run(Run),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Args {
|
||||||
|
pub fn from_args() -> Self {
|
||||||
|
StructOpt::from_args()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, StructOpt)]
|
||||||
|
pub struct Run {
|
||||||
|
/// Exit once the node has caught up
|
||||||
|
#[structopt(short = "s", long = "short")]
|
||||||
|
short: bool,
|
||||||
|
|
||||||
|
/// Fork and run as a daemon
|
||||||
|
#[structopt(short = "d", long = "daemon")]
|
||||||
|
daemon: bool,
|
||||||
|
|
||||||
|
/// Port on which to run the node
|
||||||
|
#[structopt(short = "p", long = "port", default_value = DEFAULT_PORT_STR)]
|
||||||
|
port: u16,
|
||||||
|
|
||||||
|
/// Path in which to store node content
|
||||||
|
#[structopt(long = "path", default_value = ".unnamed/node")]
|
||||||
|
path: PathBuf,
|
||||||
|
|
||||||
|
/// Nodes to initially connect to
|
||||||
|
#[structopt(long = "initial_nodes", parse(try_from_str = parse_connection_address))]
|
||||||
|
initial_nodes: Vec<SocketAddr>,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parse_connection_address(arg: &str) -> io::Result<SocketAddr> {
|
||||||
|
let mut addrs = arg
|
||||||
|
.to_socket_addrs()
|
||||||
|
.or_else(|_| (arg, DEFAULT_PORT).to_socket_addrs())?;
|
||||||
|
Ok(addrs.next().expect("no socket addr"))
|
||||||
|
}
|
@ -1,53 +1,16 @@
|
|||||||
use std::net::SocketAddr;
|
mod args;
|
||||||
use std::net::ToSocketAddrs;
|
|
||||||
use std::path::PathBuf;
|
|
||||||
|
|
||||||
use std::io;
|
#[derive(Debug)]
|
||||||
|
enum Error {}
|
||||||
|
|
||||||
use structopt::StructOpt;
|
fn main() -> Result<(), Error> {
|
||||||
|
let node = args::Args::from_args();
|
||||||
|
|
||||||
pub const DEFAULT_PORT: u16 = 8443;
|
match node {
|
||||||
const DEFAULT_PORT_STR: &str = "8443";
|
args::Args::Run(args) => run(&args),
|
||||||
|
}
|
||||||
#[derive(Debug, StructOpt)]
|
|
||||||
enum Node {
|
|
||||||
/// Run the node
|
|
||||||
Run {
|
|
||||||
/// Exit once the node has caught up
|
|
||||||
#[structopt(short = "s", long = "short")]
|
|
||||||
short: bool,
|
|
||||||
|
|
||||||
/// Fork and run as a daemon
|
|
||||||
#[structopt(short = "d", long = "daemon")]
|
|
||||||
daemon: bool,
|
|
||||||
|
|
||||||
/// Port on which to run the node
|
|
||||||
#[structopt(short = "p", long = "port", default_value = DEFAULT_PORT_STR)]
|
|
||||||
port: u16,
|
|
||||||
|
|
||||||
/// Path in which to store node content
|
|
||||||
#[structopt(long = "path", default_value = ".unnamed/node")]
|
|
||||||
path: PathBuf,
|
|
||||||
|
|
||||||
/// Nodes to initially connect to
|
|
||||||
#[structopt(long = "initial_nodes", parse(try_from_str = parse_connection_address))]
|
|
||||||
initial_nodes: Vec<SocketAddr>,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_connection_address(arg: &str) -> io::Result<SocketAddr> {
|
fn run(args: &args::Run) -> Result<(), Error> {
|
||||||
let mut addrs = arg
|
|
||||||
.to_socket_addrs()
|
|
||||||
.or_else(|_| (arg, DEFAULT_PORT).to_socket_addrs())?;
|
|
||||||
Ok(addrs.next().expect("no socket addr"))
|
|
||||||
}
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
let node = Node::from_args();
|
|
||||||
|
|
||||||
println!("{:?}", node);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn run() -> Result<(), ()> {
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user