use crate::events::with_events;
use crate::format::tabbed;
use crate::metadata::metadata;
use k8s_openapi::api::core::v1::{ConfigMap, Event, Secret};
use k8s_openapi::jiff::Timestamp;
use std::fmt::Write;
pub fn render_secret(secret: &Secret) -> String {
let mut out = metadata(&secret.metadata);
write!(
out,
"\nType:\t{}\n\nData\n====\n",
secret.type_.as_deref().unwrap_or_default()
)
.unwrap();
for (key, value) in secret.data.iter().flatten() {
if key == "token" && secret.type_.as_deref() == Some("kubernetes.io/service-account-token")
{
writeln!(out, "{key}:\t{}", String::from_utf8_lossy(&value.0)).unwrap();
} else {
writeln!(out, "{key}:\t{} bytes", value.0.len()).unwrap();
}
}
tabbed(&out)
}
pub fn render_config_map(cm: &ConfigMap, events: &[Event], now: Timestamp) -> String {
let mut out = metadata(&cm.metadata);
out.push_str("\nData\n====\n");
for (key, value) in cm.data.iter().flatten() {
writeln!(out, "{key}:\n----\n{value}\n").unwrap();
}
out.push_str("\nBinaryData\n====\n");
for (key, value) in cm.binary_data.iter().flatten() {
writeln!(out, "{key}: {} bytes", value.0.len()).unwrap();
}
out.push('\n');
with_events(out, Some(events), now)
}