use shep_core::paths::ShepPaths;
use shep_core::protocol::{DogAccess, ProcessInfo};
use crate::commands::shep_toml::ShepToml;
pub(crate) fn mark_access(procs: &mut [ProcessInfo], paths: &ShepPaths) {
let Ok(cfg) = ShepToml::read_only(&paths.daemon_config) else {
return;
};
for proc in procs.iter_mut().filter(|proc| proc.dog.is_some()) {
let undeclared = proc.disabled != Some(true)
&& proc.dog.as_ref().is_some_and(|dog| dog.grants().is_none());
let record = cfg.grant_record(&proc.name).ok().flatten();
proc.access = Some(DogAccess {
undeclared,
not_reviewed: record.as_ref().is_some_and(|record| !record.reviewed),
waiting: record
.map(|record| record.waiting.names().map(str::to_owned).collect())
.unwrap_or_default(),
});
}
}