use oxibrain::{Brain, BrainConfig, BriefTarget};
use std::path::Path;
pub async fn run(
dir: &Path,
entity: Option<&str>,
space: &str,
kind: &str,
topic: Option<&str>,
) -> anyhow::Result<()> {
let brain = Brain::open(BrainConfig::at(dir)).await?;
let space_id = brain.ensure_space(space).await?;
let page = match kind {
"entity" => {
let id = entity
.ok_or_else(|| anyhow::anyhow!("page: --kind entity requires an entity id"))?;
brain.brief(&space_id, id).await?
}
"space" => brain.brief_target(&space_id, BriefTarget::Space).await?,
"topic" => {
let t = topic
.ok_or_else(|| anyhow::anyhow!("page: --kind topic requires --topic <keyword>"))?;
brain.brief_target(&space_id, BriefTarget::Topic(t)).await?
}
other => anyhow::bail!("page: --kind '{other}' (expected entity|space|topic)"),
};
println!("{page}");
Ok(())
}