foundry_wallets/wallet_browser/
opts.rs1use std::time::Duration;
2
3use alloy_network::Network;
4use clap::Parser;
5use eyre::Result;
6use serde::Serialize;
7
8use crate::wallet_browser::signer::BrowserSigner;
9
10#[derive(Clone, Debug, Default, Serialize, Parser)]
12#[command(next_help_heading = "Browser wallet options")]
13pub struct BrowserWalletOpts {
14 #[arg(long, help_heading = "")]
16 pub browser: bool,
17
18 #[arg(long, value_name = "PORT", default_value = "9545", requires = "browser")]
20 pub browser_port: u16,
21
22 #[arg(long, default_value_t = false, requires = "browser")]
24 pub browser_disable_open: bool,
25
26 #[arg(long, hide = true)]
31 pub browser_development: bool,
32}
33
34impl BrowserWalletOpts {
35 pub async fn run<N: Network>(&self) -> Result<Option<BrowserSigner<N>>> {
36 Ok(if self.browser {
37 Some(
38 BrowserSigner::new(
39 self.browser_port,
40 !self.browser_disable_open,
41 Duration::from_secs(300),
42 self.browser_development,
43 )
44 .await?,
45 )
46 } else {
47 None
48 })
49 }
50}