dev-scope 2024.2.21

A tool to help diagnose errors, setup machines, and report bugs to authors.
Documentation
use crate::models::prelude::{ModelMetadataAnnotations, ModelMetadataBuilder};
use crate::shared::prelude::{DoctorGroup, DoctorGroupAction, DoctorGroupBuilder};
use std::collections::BTreeMap;

pub fn make_root_model_additional<Meta, Group>(
    actions: Vec<DoctorGroupAction>,
    edit_meta: Meta,
    edit_group: Group,
) -> DoctorGroup
where
    Meta: FnOnce(&mut ModelMetadataBuilder) -> &mut ModelMetadataBuilder,
    Group: FnOnce(&mut DoctorGroupBuilder) -> &mut DoctorGroupBuilder,
{
    let mut binding = ModelMetadataBuilder::default();
    let metadata_builder = binding
        .name("fake-name")
        .description("a description")
        .annotations(ModelMetadataAnnotations::default())
        .labels(BTreeMap::default());
    let metadata = edit_meta(metadata_builder).build().unwrap();

    let mut binding = DoctorGroupBuilder::default();
    let group_builder = binding
        .full_name("DoctorGroup/fake-name")
        .actions(actions)
        .metadata(metadata)
        .requires(Vec::new());

    edit_group(group_builder).build().unwrap()
}

pub fn meta_noop(input: &mut ModelMetadataBuilder) -> &mut ModelMetadataBuilder {
    input
}

pub fn group_noop(input: &mut DoctorGroupBuilder) -> &mut DoctorGroupBuilder {
    input
}

pub fn build_root_model(actions: Vec<DoctorGroupAction>) -> DoctorGroup {
    make_root_model_additional(actions, meta_noop, group_noop)
}