Skip to main content

foundry_cli/opts/
network.rs

1use alloy_chains::Chain;
2use alloy_primitives::ChainId;
3
4/// Network selection, defaulting to Ethereum
5#[derive(Clone, Debug, Default, clap::ValueEnum)]
6pub enum NetworkVariant {
7    /// Ethereum (default)
8    #[default]
9    Ethereum,
10    /// Optimism / OP-stack
11    Optimism,
12    /// Tempo
13    Tempo,
14}
15
16impl From<ChainId> for NetworkVariant {
17    fn from(chain_id: ChainId) -> Self {
18        let chain = Chain::from_id(chain_id);
19        if chain.is_tempo() {
20            Self::Tempo
21        } else if chain.is_optimism() {
22            Self::Optimism
23        } else {
24            Default::default()
25        }
26    }
27}