soroban_cli/commands/keys/
fund.rs

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