kaspa_cli_lib/modules/settings.rs
1use crate::imports::*;
2
3#[derive(Default, Handler)]
4#[help("Manage application settings")]
5pub struct Settings;
6
7impl Settings {
8 async fn main(self: Arc<Self>, ctx: &Arc<dyn Context>, _argv: Vec<String>, _cmd: &str) -> Result<()> {
9 let ctx = ctx.clone().downcast_arc::<KaspaCli>()?;
10
11 tprintln!(ctx, "\nSettings:\n");
12 // let list = WalletSettings::list();
13 let list = WalletSettings::into_iter()
14 .map(|setting| {
15 let value: String = ctx.wallet().settings().get(setting.clone()).unwrap_or_else(|| "-".to_string());
16 let descr = setting.describe();
17 (setting.as_str().to_lowercase(), value, descr)
18 })
19 .collect::<Vec<(_, _, _)>>();
20 let c1 = list.iter().map(|(c, _, _)| c.len()).fold(0, |a, b| a.max(b)) + 4;
21 let c2 = list.iter().map(|(_, c, _)| c.len()).fold(0, |a, b| a.max(b)) + 4;
22
23 list.iter().for_each(|(k, v, d)| {
24 tprintln!(ctx, "{}: {} \t {}", k.pad_to_width_with_alignment(c1, pad::Alignment::Right), v.pad_to_width(c2), d);
25 });
26
27 tprintln!(ctx);
28
29 /*
30
31 this is deprecated in favor of dedicated `network`, `server` and `open <wallet name>` commands
32
33
34 else if argv.len() != 2 {
35 tprintln!(ctx, "usage: set <key> <value>");
36 return Ok(());
37 } else {
38 let key = argv[0].as_str();
39 let value = argv[1].as_str().trim();
40
41 if value.contains(' ') || value.contains('\t') {
42 return Err(Error::Custom("Whitespace in settings is not allowed".to_string()));
43 }
44
45 match key {
46 "network" => {
47 let network: NetworkId = value.parse()?;
48 ctx.wallet().settings().set(WalletSettings::Network, network).await?;
49 }
50 "server" => {
51 ctx.wallet().settings().set(WalletSettings::Server, value).await?;
52 }
53 "wallet" => {
54 ctx.wallet().settings().set(WalletSettings::Wallet, value).await?;
55 }
56 // "scrollback" => {
57 // ctx.wallet().settings().set(WalletSettings::Wallet, value).await?;
58 // }
59 _ => return Err(Error::Custom(format!("Unknown setting '{}'", key))),
60 }
61 ctx.wallet().settings().try_store().await?;
62 }
63 */
64
65 Ok(())
66 }
67}