Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 30 additions & 8 deletions crates/faucet/src/args.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,38 +12,42 @@ use tempo_alloy::{TempoNetwork, provider::ext::TempoProviderBuilderExt};
#[command(next_help_heading = "Faucet")]
pub struct FaucetArgs {
/// Whether the faucet is enabled
#[arg(long = "faucet.enabled", default_value_t = false)]
#[arg(
id = "faucet.enabled",
long = "faucet.enabled",
default_value_t = false
)]
pub enabled: bool,

/// Faucet funding private key
#[arg(
long = "faucet.private-key",
requires = "enabled",
required_if_eq("enabled", "true")
requires = "faucet.enabled",
required_if_eq("faucet.enabled", "true")
)]
pub private_key: Option<B256>,

/// Amount for each faucet funding transaction
#[arg(
long = "faucet.amount",
requires = "enabled",
required_if_eq("enabled", "true")
requires = "faucet.enabled",
required_if_eq("faucet.enabled", "true")
)]
pub amount: Option<U256>,

/// Target token address for the faucet to be funding with
#[arg(
long = "faucet.address",
requires = "enabled",
required_if_eq("enabled", "true"),
requires = "faucet.enabled",
required_if_eq("faucet.enabled", "true"),
num_args(0..)
)]
pub token_addresses: Option<Vec<Address>>,

#[arg(
long = "faucet.node-address",
default_value = "http://localhost:8545",
requires = "enabled"
requires = "faucet.enabled"
)]
pub node_address: String,
}
Expand Down Expand Up @@ -79,3 +83,21 @@ impl FaucetArgs {
.erased()
}
}

#[cfg(test)]
mod tests {
use super::*;
use clap::Parser;

/// A helper type to parse Args more easily
#[derive(Parser)]
struct CommandParser {
#[command(flatten)]
args: FaucetArgs,
}

#[test]
fn faucet_args_default_sanity_test() {
assert!(CommandParser::try_parse_from(["tempo"]).is_ok());
}
}
Loading