now possible to select ChainSpec by using CLI flag (lighthouse-252)

This commit is contained in:
thojest 2019-03-01 18:19:08 +01:00
parent 8671c5790c
commit f0ea691208
2 changed files with 30 additions and 6 deletions

View File

@ -1,11 +1,13 @@
use std::fs;
use std::path::PathBuf;
use types::ChainSpec;
/// Stores the core configuration for this validator instance.
#[derive(Clone)]
pub struct ClientConfig {
pub data_dir: PathBuf,
pub server: String,
pub spec: ChainSpec,
}
const DEFAULT_LIGHTHOUSE_DIR: &str = ".lighthouse-validators";
@ -20,6 +22,11 @@ impl ClientConfig {
fs::create_dir_all(&data_dir)
.unwrap_or_else(|_| panic!("Unable to create {:?}", &data_dir));
let server = "localhost:50051".to_string();
Self { data_dir, server }
let spec = ChainSpec::foundation();
Self {
data_dir,
server,
spec,
}
}
}

View File

@ -43,6 +43,15 @@ fn main() {
.help("Address to connect to BeaconNode.")
.takes_value(true),
)
.arg(
Arg::with_name("spec")
.long("spec")
.value_name("spec")
.short("s")
.help("Configuration of Beacon Chain")
.takes_value(true)
.possible_values(&["foundation", "few_validators"]),
)
.get_matches();
let mut config = ClientConfig::default();
@ -62,6 +71,17 @@ fn main() {
}
}
// TODO: Permit loading a custom spec from file.
// Custom spec
if let Some(spec_str) = matches.value_of("spec") {
match spec_str {
"foundation" => config.spec = ChainSpec::foundation(),
"few_validators" => config.spec = ChainSpec::few_validators(),
// Should be impossible
_ => error!(log, "Invalid spec defined"; "spec" => format!("{:?}", config.spec)),
};
}
// Log configuration
info!(log, "";
"data_dir" => &config.data_dir.to_str(),
@ -81,11 +101,8 @@ fn main() {
Arc::new(ValidatorServiceClient::new(ch))
};
// Ethereum
//
// TODO: Permit loading a custom spec from file.
// https://github.com/sigp/lighthouse/issues/160
let spec = Arc::new(ChainSpec::foundation());
// Spec
let spec = Arc::new(config.spec.clone());
// Clock for determining the present slot.
// TODO: this shouldn't be a static time, instead it should be pulled from the beacon node.