serum_dev_tools/
config.rs1use anyhow::Result;
2use clap::Parser;
3use std::str::FromStr;
4
5#[derive(Default, Debug, Parser)]
6pub struct ConfigOverride {
7 #[clap(global = true, long = "provider.wallet")]
9 pub wallet: Option<WalletPath>,
10}
11
12#[derive(Debug, Default)]
51pub struct Config {
52 pub provider: ProviderConfig,
53}
54
55#[derive(Debug, Default)]
56pub struct ProviderConfig {
57 pub wallet: WalletPath,
58}
59
60impl Config {
61 pub fn override_config(cfg_override: &ConfigOverride) -> Result<Config> {
62 let mut cfg = Config::default();
63
64 if let Some(wallet) = cfg_override.wallet.clone() {
65 cfg.provider.wallet = wallet;
66 }
67
68 return Ok(cfg);
69 }
70}
71
72pub fn with_config<R>(cfg_override: &ConfigOverride, f: impl FnOnce(&Config) -> R) -> R {
73 let cfg = Config::override_config(cfg_override).expect("failed to override config");
74
75 let r = f(&cfg);
76
77 r
78}
79
80crate::home_path!(WalletPath, ".config/solana/id.json");