soroban_cli/commands/
global.rs1use clap::builder::styling::{AnsiColor, Effects, Styles};
2use std::path::PathBuf;
3
4use super::{config, HEADING_GLOBAL};
5
6const USAGE_STYLES: Styles = Styles::styled()
7 .header(AnsiColor::Green.on_default().effects(Effects::BOLD))
8 .usage(AnsiColor::Green.on_default().effects(Effects::BOLD))
9 .literal(AnsiColor::Cyan.on_default().effects(Effects::BOLD))
10 .placeholder(AnsiColor::Cyan.on_default().effects(Effects::BOLD))
11 .error(AnsiColor::Red.on_default().effects(Effects::BOLD))
12 .valid(AnsiColor::Cyan.on_default().effects(Effects::BOLD))
13 .invalid(AnsiColor::Yellow.on_default().effects(Effects::BOLD));
14
15#[derive(Debug, clap::Args, Clone, Default)]
16#[group(skip)]
17#[allow(clippy::struct_excessive_bools)]
18#[command(styles = USAGE_STYLES)]
19pub struct Args {
20 #[clap(flatten)]
21 pub locator: config::locator::Args,
22
23 #[arg(long, short = 'f', global = true, help_heading = HEADING_GLOBAL)]
25 pub filter_logs: Vec<String>,
26
27 #[arg(long, short = 'q', global = true, help_heading = HEADING_GLOBAL)]
29 pub quiet: bool,
30
31 #[arg(long, short = 'v', global = true, help_heading = HEADING_GLOBAL)]
33 pub verbose: bool,
34
35 #[arg(long, visible_alias = "vv", global = true, help_heading = HEADING_GLOBAL)]
37 pub very_verbose: bool,
38
39 #[arg(long, env = "STELLAR_NO_CACHE", global = true, help_heading = HEADING_GLOBAL)]
41 pub no_cache: bool,
42}
43
44#[derive(thiserror::Error, Debug)]
45pub enum Error {
46 #[error("reading file {filepath}: {error}")]
47 CannotReadLedgerFile {
48 filepath: PathBuf,
49 error: soroban_ledger_snapshot::Error,
50 },
51
52 #[error("committing file {filepath}: {error}")]
53 CannotCommitLedgerFile {
54 filepath: PathBuf,
55 error: soroban_ledger_snapshot::Error,
56 },
57}
58
59impl Args {
60 pub fn log_level(&self) -> Option<tracing::Level> {
61 if self.quiet {
62 None
63 } else if self.very_verbose {
64 Some(tracing::Level::TRACE)
65 } else if self.verbose {
66 Some(tracing::Level::DEBUG)
67 } else {
68 Some(tracing::Level::INFO)
69 }
70 }
71}