cli

Command-line interface for Radroots
git clone https://radroots.dev/git/cli.git
Log | Files | Refs | README | LICENSE

logging.rs (1608B)


      1 use std::path::PathBuf;
      2 
      3 use radroots_log::{LogFileLayout, LoggingOptions};
      4 
      5 use crate::runtime::config::LoggingConfig;
      6 
      7 const CLI_LOG_FILE_NAME: &str = "radroots-cli.log";
      8 
      9 #[derive(Debug, Clone, PartialEq, Eq)]
     10 pub struct LoggingState {
     11     pub initialized: bool,
     12     pub current_file: Option<PathBuf>,
     13 }
     14 
     15 pub fn initialize_logging(config: &LoggingConfig) -> Result<LoggingState, radroots_log::Error> {
     16     let options = to_radroots_logging_options(config);
     17     let state = LoggingState {
     18         initialized: true,
     19         current_file: options.resolved_current_log_file_path(),
     20     };
     21     radroots_log::init_logging(options)?;
     22     Ok(state)
     23 }
     24 
     25 pub fn to_radroots_logging_options(config: &LoggingConfig) -> LoggingOptions {
     26     LoggingOptions {
     27         dir: config.directory.clone(),
     28         file_name: CLI_LOG_FILE_NAME.to_owned(),
     29         stdout: config.stdout,
     30         default_level: Some(config.filter.clone()),
     31         file_layout: LogFileLayout::PrefixedDate,
     32     }
     33 }
     34 
     35 #[cfg(test)]
     36 mod tests {
     37     use super::to_radroots_logging_options;
     38     use crate::runtime::config::LoggingConfig;
     39     use std::path::PathBuf;
     40 
     41     #[test]
     42     fn logging_options_use_cli_file_name() {
     43         let options = to_radroots_logging_options(&LoggingConfig {
     44             filter: "info".to_owned(),
     45             directory: Some(PathBuf::from("logs")),
     46             stdout: false,
     47         });
     48         assert_eq!(options.file_name, "radroots-cli.log");
     49         assert_eq!(options.default_level.as_deref(), Some("info"));
     50         assert_eq!(options.dir, Some(PathBuf::from("logs")));
     51         assert!(!options.stdout);
     52     }
     53 }