Skip to content
Snippets Groups Projects
Commit f6cbf442 authored by Joshy Orndorff's avatar Joshy Orndorff Committed by Bastian Köcher
Browse files

Rename ChainSpec field (#4471)

* initial rename

* nitpick: add space in "chain spec"

* Add comment to client spec.
parent e6b8a696
No related merge requests found
......@@ -80,7 +80,7 @@ impl<'a, G: RuntimeGenesis, E> BuildStorage for &'a ChainSpec<G, E> {
let child_info = ChildInfo::resolve_child_info(
child_content.child_type,
child_content.child_info.as_slice(),
).expect("chainspec contains correct content").to_owned();
).expect("chain spec contains correct content").to_owned();
(
sk.0,
StorageChild {
......@@ -129,10 +129,11 @@ enum Genesis<G> {
Raw(RawGenesis),
}
/// A configuration of a client. Does not include runtime storage initialization.
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
#[serde(deny_unknown_fields)]
struct ChainSpecFile<E> {
struct ClientSpec<E> {
pub name: String,
pub id: String,
pub boot_nodes: Vec<String>,
......@@ -157,14 +158,14 @@ pub type NoExtension = Option<()>;
/// A configuration of a chain. Can be used to build a genesis block.
pub struct ChainSpec<G, E = NoExtension> {
spec: ChainSpecFile<E>,
client_spec: ClientSpec<E>,
genesis: GenesisSource<G>,
}
impl<G, E: Clone> Clone for ChainSpec<G, E> {
fn clone(&self) -> Self {
ChainSpec {
spec: self.spec.clone(),
client_spec: self.client_spec.clone(),
genesis: self.genesis.clone(),
}
}
......@@ -173,44 +174,44 @@ impl<G, E: Clone> Clone for ChainSpec<G, E> {
impl<G, E> ChainSpec<G, E> {
/// A list of bootnode addresses.
pub fn boot_nodes(&self) -> &[String] {
&self.spec.boot_nodes
&self.client_spec.boot_nodes
}
/// Spec name.
pub fn name(&self) -> &str {
&self.spec.name
&self.client_spec.name
}
/// Spec id.
pub fn id(&self) -> &str {
&self.spec.id
&self.client_spec.id
}
/// Telemetry endpoints (if any)
pub fn telemetry_endpoints(&self) -> &Option<TelemetryEndpoints> {
&self.spec.telemetry_endpoints
&self.client_spec.telemetry_endpoints
}
/// Network protocol id.
pub fn protocol_id(&self) -> Option<&str> {
self.spec.protocol_id.as_ref().map(String::as_str)
self.client_spec.protocol_id.as_ref().map(String::as_str)
}
/// Additional loosly-typed properties of the chain.
///
/// Returns an empty JSON object if 'properties' not defined in config
pub fn properties(&self) -> Properties {
self.spec.properties.as_ref().unwrap_or(&json::map::Map::new()).clone()
self.client_spec.properties.as_ref().unwrap_or(&json::map::Map::new()).clone()
}
/// Add a bootnode to the list.
pub fn add_boot_node(&mut self, addr: Multiaddr) {
self.spec.boot_nodes.push(addr.to_string())
self.client_spec.boot_nodes.push(addr.to_string())
}
/// Returns a reference to defined chain spec extensions.
pub fn extensions(&self) -> &E {
&self.spec.extensions
&self.client_spec.extensions
}
/// Create hardcoded spec.
......@@ -224,7 +225,7 @@ impl<G, E> ChainSpec<G, E> {
properties: Option<Properties>,
extensions: E,
) -> Self {
let spec = ChainSpecFile {
let client_spec = ClientSpec {
name: name.to_owned(),
id: id.to_owned(),
boot_nodes: boot_nodes,
......@@ -237,7 +238,7 @@ impl<G, E> ChainSpec<G, E> {
};
ChainSpec {
spec,
client_spec,
genesis: GenesisSource::Factory(Rc::new(constructor)),
}
}
......@@ -247,10 +248,10 @@ impl<G, E: serde::de::DeserializeOwned> ChainSpec<G, E> {
/// Parse json content into a `ChainSpec`
pub fn from_json_bytes(json: impl Into<Cow<'static, [u8]>>) -> Result<Self, String> {
let json = json.into();
let spec = json::from_slice(json.as_ref())
let client_spec = json::from_slice(json.as_ref())
.map_err(|e| format!("Error parsing spec file: {}", e))?;
Ok(ChainSpec {
spec,
client_spec,
genesis: GenesisSource::Binary(json),
})
}
......@@ -259,10 +260,10 @@ impl<G, E: serde::de::DeserializeOwned> ChainSpec<G, E> {
pub fn from_json_file(path: PathBuf) -> Result<Self, String> {
let file = File::open(&path)
.map_err(|e| format!("Error opening spec file: {}", e))?;
let spec = json::from_reader(file)
let client_spec = json::from_reader(file)
.map_err(|e| format!("Error parsing spec file: {}", e))?;
Ok(ChainSpec {
spec,
client_spec,
genesis: GenesisSource::File(path),
})
}
......@@ -274,7 +275,7 @@ impl<G: RuntimeGenesis, E: serde::Serialize> ChainSpec<G, E> {
#[derive(Serialize, Deserialize)]
struct Container<G, E> {
#[serde(flatten)]
spec: ChainSpecFile<E>,
client_spec: ClientSpec<E>,
genesis: Genesis<G>,
};
......@@ -304,11 +305,11 @@ impl<G: RuntimeGenesis, E: serde::Serialize> ChainSpec<G, E> {
},
(_, genesis) => genesis,
};
let spec = Container {
spec: self.spec,
let container = Container {
client_spec: self.client_spec,
genesis,
};
json::to_string_pretty(&spec)
json::to_string_pretty(&container)
.map_err(|e| format!("Error generating spec json: {}", e))
}
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment