soroban_cli/commands/keys/
fund.rs1use 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 #[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}