Update wallet to take network arg
This commit is contained in:
parent
7c08b397eb
commit
0babee39a4
|
@ -1,26 +1,28 @@
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate clap;
|
extern crate clap;
|
||||||
extern crate dirs;
|
extern crate dirs;
|
||||||
|
#[macro_use]
|
||||||
extern crate solana;
|
extern crate solana;
|
||||||
|
|
||||||
use clap::{App, Arg, ArgMatches, SubCommand};
|
use clap::{App, Arg, ArgMatches, SubCommand};
|
||||||
use solana::client::mk_client;
|
use solana::client::mk_client;
|
||||||
use solana::crdt::NodeInfo;
|
|
||||||
use solana::drone::DRONE_PORT;
|
use solana::drone::DRONE_PORT;
|
||||||
use solana::logger;
|
use solana::logger;
|
||||||
use solana::signature::{read_keypair, KeypairUtil};
|
use solana::signature::{read_keypair, KeypairUtil};
|
||||||
use solana::thin_client::poll_gossip_for_leader;
|
use solana::thin_client::poll_gossip_for_leader;
|
||||||
use solana::wallet::{parse_command, process_command, read_leader, WalletConfig, WalletError};
|
use solana::wallet::{parse_command, process_command, WalletConfig, WalletError};
|
||||||
use std::error;
|
use std::error;
|
||||||
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
|
use std::net::SocketAddr;
|
||||||
|
|
||||||
pub fn parse_args(matches: &ArgMatches) -> Result<WalletConfig, Box<error::Error>> {
|
pub fn parse_args(matches: &ArgMatches) -> Result<WalletConfig, Box<error::Error>> {
|
||||||
let leader: NodeInfo;
|
let network = if let Some(addr) = matches.value_of("network") {
|
||||||
if let Some(l) = matches.value_of("leader") {
|
addr.parse().or_else(|_| {
|
||||||
leader = read_leader(l)?.node_info;
|
Err(WalletError::BadParameter(
|
||||||
|
"Invalid network location".to_string(),
|
||||||
|
))
|
||||||
|
})?
|
||||||
} else {
|
} else {
|
||||||
let server_addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), 8000);
|
socketaddr!("127.0.0.1:8001")
|
||||||
leader = NodeInfo::new_with_socketaddr(&server_addr);
|
|
||||||
};
|
};
|
||||||
let timeout: Option<u64>;
|
let timeout: Option<u64>;
|
||||||
if let Some(secs) = matches.value_of("timeout") {
|
if let Some(secs) = matches.value_of("timeout") {
|
||||||
|
@ -43,7 +45,7 @@ pub fn parse_args(matches: &ArgMatches) -> Result<WalletConfig, Box<error::Error
|
||||||
)))
|
)))
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
let leader = poll_gossip_for_leader(leader.contact_info.ncp, timeout)?;
|
let leader = poll_gossip_for_leader(network, timeout)?;
|
||||||
|
|
||||||
let mut drone_addr = leader.contact_info.tpu;
|
let mut drone_addr = leader.contact_info.tpu;
|
||||||
drone_addr.set_port(DRONE_PORT);
|
drone_addr.set_port(DRONE_PORT);
|
||||||
|
@ -63,13 +65,14 @@ fn main() -> Result<(), Box<error::Error>> {
|
||||||
let matches = App::new("solana-wallet")
|
let matches = App::new("solana-wallet")
|
||||||
.version(crate_version!())
|
.version(crate_version!())
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("leader")
|
Arg::with_name("network")
|
||||||
.short("l")
|
.short("n")
|
||||||
.long("leader")
|
.long("network")
|
||||||
.value_name("PATH")
|
.value_name("HOST:PORT")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.help("/path/to/leader.json"),
|
.help("Rendezvous with the network at this gossip entry point; defaults to 127.0.0.1:8001"),
|
||||||
).arg(
|
)
|
||||||
|
.arg(
|
||||||
Arg::with_name("keypair")
|
Arg::with_name("keypair")
|
||||||
.short("k")
|
.short("k")
|
||||||
.long("keypair")
|
.long("keypair")
|
||||||
|
|
Loading…
Reference in New Issue