use anyhow::Error;
use crate::common::app_context::AppContext;
use crate::output::config_summary::{self, ConfigSummary, SessionSummary};
use manta_shared::common::config::get_cli_config_file_path;
pub async fn exec(
ctx: &AppContext<'_>,
output_opt: Option<&str>,
) -> Result<(), Error> {
let log_level = ctx
.settings
.get_string("log")
.unwrap_or_else(|_| "error".to_string());
let settings_hsm_group = ctx
.settings
.get_string("hsm_group")
.ok()
.filter(|s| !s.is_empty());
let settings_site = ctx
.settings
.get_string("site")
.ok()
.filter(|s| !s.is_empty());
let session = ctx.session.as_ref().map(|s| SessionSummary {
username: s.username.clone(),
name: s.name.clone(),
is_admin: s.is_admin,
accessible_groups: s.accessible_groups.clone(),
});
let summary = ConfigSummary {
config_file: get_cli_config_file_path().map_or_else(
|_| "<unknown>".to_string(),
|p| p.to_string_lossy().to_string(),
),
log_level,
current_site: ctx.site_name.map(str::to_string),
configured_site: settings_site,
read_only: ctx.read_only,
session,
current_group: settings_hsm_group,
};
config_summary::print(&summary, output_opt)?;
Ok(())
}