soroban_cli/commands/keys/
fund.rs

1use crate::{commands::global, config::network, print::Print};
2use clap::command;
3
4use super::public_key;
5
6#[derive(thiserror::Error, Debug)]
7pub enum Error {
8    #[error(transparent)]
9    Address(#[from] public_key::Error),
10    #[error(transparent)]
11    Network(#[from] network::Error),
12}
13
14#[derive(Debug, clap::Parser, Clone)]
15#[group(skip)]
16pub struct Cmd {
17    #[command(flatten)]
18    pub network: network::Args,
19    /// Address to fund
20    #[command(flatten)]
21    pub address: public_key::Cmd,
22}
23
24impl Cmd {
25    pub async fn run(&self, global_args: &global::Args) -> Result<(), Error> {
26        let print = Print::new(global_args.quiet);
27        let addr = self.address.public_key().await?;
28        let network = self.network.get(&self.address.locator)?;
29        let formatted_name = self.address.name.to_string();
30        network.fund_address(&addr).await?;
31        print.checkln(format!(
32            "Account {} funded on {:?}",
33            formatted_name, network.network_passphrase
34        ));
35        Ok(())
36    }
37}