1use oxibrain::{Brain, BrainConfig, BriefTarget};
2use std::path::Path;
3
4pub async fn run(
9 dir: &Path,
10 entity: Option<&str>,
11 space: &str,
12 kind: &str,
13 topic: Option<&str>,
14) -> anyhow::Result<()> {
15 let brain = Brain::open(BrainConfig::at(dir)).await?;
16 let space_id = brain.ensure_space(space).await?;
17 let page = match kind {
18 "entity" => {
19 let id = entity
20 .ok_or_else(|| anyhow::anyhow!("page: --kind entity requires an entity id"))?;
21 brain.brief(&space_id, id).await?
22 }
23 "space" => brain.brief_target(&space_id, BriefTarget::Space).await?,
24 "topic" => {
25 let t = topic
26 .ok_or_else(|| anyhow::anyhow!("page: --kind topic requires --topic <keyword>"))?;
27 brain.brief_target(&space_id, BriefTarget::Topic(t)).await?
28 }
29 other => anyhow::bail!("page: --kind '{other}' (expected entity|space|topic)"),
30 };
31 println!("{page}");
32 Ok(())
33}