doum_cli/cli/config/
logging.rs1use crate::system::error::Result;
4use crate::system::config::{load_config, save_config};
5use crate::cli::menu::{Menu, MenuItem};
6use crate::cli::tui::ratatui_select;
7
8pub fn run_logging_menu() -> Result<()> {
10 loop {
11 let config = load_config()?;
12
13 let menu = Menu::builder("Logging Settings")
15 .with_back()
16 .add_item(
17 "enabled",
18 format!("Enabled [current: {}]", config.logging.enabled),
19 format!("Enable/disable logging (currently: {})", config.logging.enabled)
20 )
21 .add_item(
22 "level",
23 format!("Level [current: {}]", config.logging.level),
24 format!("Log level (currently: {})", config.logging.level)
25 )
26 .build();
27
28 let selected = ratatui_select(
29 "š Logging Configuration",
30 &menu.items,
31 Some("āā: Navigate | Enter: Select | Esc/q: Cancel"),
32 None
33 )?;
34
35 match selected {
36 Some(item) => {
37 match item.id.as_str() {
38 "back" => break,
39 "exit" => {
40 println!("\nš Goodbye!");
41 std::process::exit(0);
42 }
43 "enabled" => {
44 edit_logging_enabled()?;
45 }
46 "level" => {
47 edit_logging_level()?;
48 }
49 _ => {
50 println!("\nā ļø Unknown option");
51 }
52 }
53 }
54 None => break,
55 }
56 }
57
58 Ok(())
59}
60
61fn edit_logging_enabled() -> Result<()> {
63 let mut config = load_config()?;
64 let current = config.logging.enabled;
65
66 let menu_items = vec![
67 MenuItem::new("true", "Enabled", "Enable logging"),
68 MenuItem::new("false", "Disabled", "Disable logging"),
69 ];
70
71 let current_str = if current { "true" } else { "false" };
72
73 let selected = ratatui_select(
74 "Enable Logging",
75 &menu_items,
76 Some("āā: Navigate | Enter: Select | Esc/q: Cancel"),
77 Some(current_str)
78 )?;
79
80 if let Some(item) = selected {
81 config.logging.enabled = item.id == "true";
82 save_config(&config)?;
83 println!("ā
Setting saved: enabled = {}", config.logging.enabled);
84 }
85
86 Ok(())
87}
88
89fn edit_logging_level() -> Result<()> {
91 let mut config = load_config()?;
92
93 let menu_items = vec![
94 MenuItem::new("debug", "Debug", "Debug level - Most verbose"),
95 MenuItem::new("info", "Info", "Info level - General information"),
96 MenuItem::new("warn", "Warn", "Warn level - Warnings only"),
97 MenuItem::new("error", "Error", "Error level - Errors only"),
98 ];
99
100 let selected = ratatui_select(
101 "Select Log Level",
102 &menu_items,
103 Some("āā: Navigate | Enter: Select | Esc/q: Cancel"),
104 Some(&config.logging.level)
105 )?;
106
107 if let Some(item) = selected {
108 config.logging.level = item.id.clone();
109 save_config(&config)?;
110 println!("ā
Setting saved: level = {}", config.logging.level);
111 }
112
113 Ok(())
114}