reth_seismic_cli/
chainspec.rs1use reth_chainspec::ChainSpec;
2use reth_cli::chainspec::{parse_genesis, ChainSpecParser};
3use reth_seismic_chainspec::{SEISMIC_DEV, SEISMIC_DEV_OLD, SEISMIC_MAINNET};
4use std::sync::Arc;
5
6#[derive(Debug, Clone, Default)]
8#[non_exhaustive]
9pub struct SeismicChainSpecParser;
10
11impl ChainSpecParser for SeismicChainSpecParser {
12 type ChainSpec = ChainSpec;
13
14 const SUPPORTED_CHAINS: &'static [&'static str] = &["dev", "mainnet", "dev-old"];
15
16 fn parse(s: &str) -> eyre::Result<Arc<Self::ChainSpec>> {
17 chain_value_parser(s)
18 }
19}
20
21pub fn chain_value_parser(s: &str) -> eyre::Result<Arc<ChainSpec>, eyre::Error> {
26 Ok(match s {
27 "dev" => SEISMIC_DEV.clone(),
28 "mainnet" => SEISMIC_MAINNET.clone(),
29 "dev-old" => SEISMIC_DEV_OLD.clone(),
30 _ => Arc::new(parse_genesis(s)?.into()),
31 })
32}
33
34#[cfg(test)]
35mod tests {
36 use super::*;
37
38 #[test]
39 fn parse_known_chain_spec() {
40 for &chain in SeismicChainSpecParser::SUPPORTED_CHAINS {
41 assert!(<SeismicChainSpecParser as ChainSpecParser>::parse(chain).is_ok());
42 }
43 }
44}