reth_node_core/args/
era.rs1use clap::Args;
2use reth_chainspec::{ChainKind, NamedChain};
3use std::path::Path;
4use url::Url;
5
6#[derive(Clone, Debug, Default, Args)]
8pub struct EraArgs {
9 #[arg(
11 id = "era.enable",
12 long = "era.enable",
13 value_name = "ERA_ENABLE",
14 default_value_t = false
15 )]
16 pub enabled: bool,
17
18 #[clap(flatten)]
20 pub source: EraSourceArgs,
21}
22
23#[derive(Clone, Debug, Default, Args)]
25#[group(required = false, multiple = false)]
26pub struct EraSourceArgs {
27 #[arg(long = "era.path", value_name = "ERA_PATH", verbatim_doc_comment)]
31 pub path: Option<Box<Path>>,
32
33 #[arg(long = "era.url", value_name = "ERA_URL", verbatim_doc_comment)]
38 pub url: Option<Url>,
39}
40
41pub trait DefaultEraHost {
43 fn default_era_host(&self) -> Option<Url>;
47}
48
49impl DefaultEraHost for ChainKind {
50 fn default_era_host(&self) -> Option<Url> {
51 Some(match self {
52 Self::Named(NamedChain::Mainnet) => {
53 Url::parse("https://era.ithaca.xyz/era1/index.html").expect("URL should be valid")
54 }
55 Self::Named(NamedChain::Sepolia) => {
56 Url::parse("https://era.ithaca.xyz/sepolia-era1/index.html")
57 .expect("URL should be valid")
58 }
59 _ => return None,
60 })
61 }
62}