currency_conversion_cli/commands/
info.rs1use 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 if args.symbols || args.all {
29 infos.insert(
30 "symbols",
31 Info::Symbols(get_symbols_info(&config.symbols_file_path)?),
32 );
33 }
34
35 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 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}