currency_conversion_cli/commands/
info.rs

1use std::collections::HashMap;
2
3use anyhow::Result;
4
5use crate::{
6    cli::InfoArgs,
7    commands::info::{
8        info_conversion_rates::get_converison_rates_info, info_symbols::get_symbols_info,
9    },
10    config::Config,
11};
12
13use self::{common::Info, info_config::get_config_info};
14
15mod common;
16mod info_config;
17mod info_conversion_rates;
18mod info_symbols;
19
20#[cfg(not(tarpaulin_include))]
21pub fn run_info(config: Config, args: &InfoArgs, config_path: Option<String>) -> Result<()> {
22    let mut infos: HashMap<&str, Info> = HashMap::new();
23
24    tracing::info!("Info begin");
25    tracing::debug!("{:?}", args);
26
27    // Symbols
28    if args.symbols || args.all {
29        infos.insert(
30            "symbols",
31            Info::Symbols(get_symbols_info(&config.symbols_file_path)?),
32        );
33    }
34
35    // Conversion rate
36
37    if args.conversion_rates || args.all {
38        infos.insert(
39            "conversion_rates",
40            Info::ConversionRates(get_converison_rates_info(
41                &config.conversion_rates_file_path,
42            )?),
43        );
44    }
45
46    // Config
47    if args.config || args.all {
48        infos.insert(
49            "config",
50            Info::Config(get_config_info(config, config_path)?),
51        );
52    }
53
54    println!("{:?}", infos);
55    tracing::info!("Info end");
56    tracing::debug!("{:?}", infos);
57
58    Ok(())
59}