Skip to main content

wowlab_docgen_cli/context/collectors/
cargo.rs

1use serde::Serialize;
2
3use super::{ContextEntry, to_value};
4use crate::RenderCtx;
5
6/// A binary target for template rendering.
7#[derive(Debug, Serialize)]
8pub struct Bin {
9    pub name: String,
10    pub required_features: Vec<String>,
11}
12
13/// Collect Cargo-specific metadata: bins, tests, benches, examples.
14#[must_use]
15pub fn collect(ctx: &RenderCtx<'_>) -> Vec<ContextEntry> {
16    let meta = ctx.metadata;
17    let mut entries = Vec::new();
18
19    let bins: Vec<Bin> = meta
20        .bins
21        .iter()
22        .map(|b| Bin {
23            name: b.name.clone(),
24            required_features: b.required_features.clone(),
25        })
26        .collect();
27
28    entries.push(("bins", to_value(&bins)));
29    entries.push(("tests", to_value(&meta.tests)));
30    entries.push(("benches", to_value(&meta.benches)));
31    entries.push(("examples", to_value(&meta.examples)));
32
33    entries
34}