dip 0.2.1

Write cross-platform application with React-like declarative UI framework and scalable ECS architecture all in Rust.
Documentation
use config::{
    builder::{ConfigBuilder, DefaultState},
    File,
};
use dip::{
    bevy::{
        app::{App, Plugin},
        ecs::{schedule::ParallelSystemDescriptorCoercion, system::ResMut},
    },
    core::config::{build_config, ConfigPlugin as ConfigPluginRaw},
};
use serde::Deserialize;

pub struct ConfigPlugin;

impl Plugin for ConfigPlugin {
    fn build(&self, app: &mut App) {
        app.add_plugin(ConfigPluginRaw::<DipConfig>::new())
            .add_startup_system(add_sources.before(build_config::<DipConfig>));
    }
}

fn add_sources(mut builder: ResMut<ConfigBuilder<DefaultState>>) {
    *builder = builder
        .clone()
        .add_source(File::with_name("src/config/default"));
}

#[derive(Deserialize, Debug)]
#[allow(dead_code)]
pub struct DipConfig {
    bundle: Bundle,
}

#[derive(Deserialize, Debug)]
pub struct Bundle {
    vm: VersionManager,
}

#[derive(Deserialize, Debug)]
pub struct VersionManager {
    tailwindcss: VersionList,
    nodejs: VersionList,
}

pub type VersionList = Vec<String>;