soroban_cli/commands/network/
ls.rs1use super::locator;
2
3#[derive(thiserror::Error, Debug)]
4pub enum Error {
5 #[error(transparent)]
6 Config(#[from] locator::Error),
7}
8
9#[derive(Debug, clap::Parser, Clone)]
10#[group(skip)]
11pub struct Cmd {
12 #[command(flatten)]
13 pub config_locator: locator::Args,
14 #[arg(long, short = 'l')]
16 pub long: bool,
17}
18
19impl Cmd {
20 pub fn run(&self) -> Result<(), Error> {
21 let sep = if self.long { "\n\n" } else { "\n" };
22 let res = if self.long { self.ls_l() } else { self.ls() }?.join(sep);
23 println!("{res}");
24 Ok(())
25 }
26
27 pub fn ls(&self) -> Result<Vec<String>, Error> {
28 Ok(self.config_locator.list_networks()?)
29 }
30
31 pub fn ls_l(&self) -> Result<Vec<String>, Error> {
32 Ok(self
33 .config_locator
34 .list_networks_long()?
35 .iter()
36 .map(|(name, network, _)| {
37 let headers = if network.rpc_headers.is_empty() {
38 " not set".to_string()
39 } else {
40 let lines: Vec<String> = network
41 .rpc_headers
42 .iter()
43 .map(|(k, _)| format!(" {k}: <concealed>"))
44 .collect();
45 format!("\n{}", lines.join("\n"))
46 };
47
48 format!(
49 "Name: {name}\nRPC url: {rpc_url}\nRPC headers:{headers}\nNetwork passphrase: {passphrase}",
50 rpc_url = network.rpc_url,
51 passphrase = network.network_passphrase,
52 )
53 })
54 .collect())
55 }
56}