Files
sprout/src/generators.rs

33 lines
896 B
Rust
Raw Normal View History

use crate::context::SproutContext;
use crate::entries::EntryDeclaration;
2025-10-13 01:54:03 -07:00
use crate::generators::bls::BlsConfiguration;
use crate::generators::matrix::MatrixConfiguration;
use anyhow::Result;
use anyhow::bail;
use serde::{Deserialize, Serialize};
use std::rc::Rc;
2025-10-13 01:54:03 -07:00
pub mod bls;
pub mod matrix;
#[derive(Serialize, Deserialize, Default, Clone)]
pub struct GeneratorDeclaration {
#[serde(default)]
pub matrix: Option<MatrixConfiguration>,
2025-10-13 01:54:03 -07:00
#[serde(default)]
pub bls: Option<BlsConfiguration>,
}
pub fn generate(
context: Rc<SproutContext>,
generator: &GeneratorDeclaration,
) -> Result<Vec<(Rc<SproutContext>, EntryDeclaration)>> {
if let Some(matrix) = &generator.matrix {
matrix::generate(context, matrix)
2025-10-13 01:54:03 -07:00
} else if let Some(bls) = &generator.bls {
bls::generate(context, bls)
} else {
bail!("unknown generator configuration");
}
}