soroban_cli/commands/keys/
fund.rs

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