fix: all tables respect table_config from settings
Extract shared render_item_info_table() and render_list_table() in modes/common.rs. Update client/info, client/list, client/status, info, status, and status_plugins to use create_table_with_config with settings.table_config instead of hardcoded presets. Previously only local --list used table_config; all other tables (client modes, status, status-plugins) ignored it.
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
use crate::client::KeepClient;
|
||||
use crate::modes::common::{OutputFormat, format_size, settings_output_format};
|
||||
use crate::modes::common::{
|
||||
DisplayItemInfo, OutputFormat, format_size, render_item_info_table, settings_output_format,
|
||||
};
|
||||
use clap::Command;
|
||||
use log::debug;
|
||||
|
||||
@@ -36,27 +38,24 @@ pub fn mode(
|
||||
println!("{}", serde_yaml::to_string(&item)?);
|
||||
}
|
||||
OutputFormat::Table => {
|
||||
use comfy_table::{Table, presets::UTF8_FULL};
|
||||
|
||||
let mut table = Table::new();
|
||||
table.load_preset(UTF8_FULL);
|
||||
|
||||
let size_str = item
|
||||
.size
|
||||
.map(|s| format_size(s as u64, settings.human_readable))
|
||||
.unwrap_or_else(|| "N/A".to_string());
|
||||
|
||||
table.add_row(vec!["ID".to_string(), item.id.to_string()]);
|
||||
table.add_row(vec!["Time".to_string(), item.ts.clone()]);
|
||||
table.add_row(vec!["Size".to_string(), size_str]);
|
||||
table.add_row(vec!["Compression".to_string(), item.compression.clone()]);
|
||||
table.add_row(vec!["Tags".to_string(), item.tags.join(", ")]);
|
||||
|
||||
for (key, value) in &item.metadata {
|
||||
table.add_row(vec![format!("Meta: {}", key), value.clone()]);
|
||||
}
|
||||
|
||||
println!("{table}");
|
||||
let display = DisplayItemInfo {
|
||||
id: item.id,
|
||||
timestamp: item.ts.clone(),
|
||||
path: String::new(),
|
||||
stream_size: item
|
||||
.size
|
||||
.map(|s| format_size(s as u64, settings.human_readable))
|
||||
.unwrap_or_else(|| "N/A".to_string()),
|
||||
compression: item.compression.clone(),
|
||||
file_size: String::new(),
|
||||
tags: item.tags.clone(),
|
||||
metadata: item
|
||||
.metadata
|
||||
.iter()
|
||||
.map(|(k, v)| (k.clone(), v.clone()))
|
||||
.collect(),
|
||||
};
|
||||
render_item_info_table(&display, &settings.table_config);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user