use bevy::ecs::reflect::AppTypeRegistry;
use bevy::{app::App, DefaultPlugins};
use bevy_mod_scripting::ScriptFunctionsPlugin;
use bevy_mod_scripting_core::bindings::function::script_function::AppScriptFunctionRegistry;
use bevy_mod_scripting_core::bindings::globals::core::CoreScriptGlobalsPlugin;
use bevy_mod_scripting_core::bindings::globals::AppScriptGlobalsRegistry;
use bevy_mod_scripting_core::BMSScriptingInfrastructurePlugin;
use ladfile_builder::plugin::{generate_lad_file, LadFileSettings, ScriptingDocgenPlugin};
fn main() -> std::io::Result<()> {
let mut app = App::new();
app.add_plugins(DefaultPlugins);
app.add_plugins((
CoreScriptGlobalsPlugin::default(),
ScriptFunctionsPlugin,
BMSScriptingInfrastructurePlugin,
));
app.add_plugins(ScriptingDocgenPlugin::default());
app.finish();
app.cleanup();
let type_registry = app
.world()
.get_resource::<AppTypeRegistry>()
.unwrap()
.clone();
let function_registry = app
.world()
.get_resource::<AppScriptFunctionRegistry>()
.unwrap()
.clone();
let global_registry = app
.world()
.get_resource::<AppScriptGlobalsRegistry>()
.unwrap()
.clone();
let settings = LadFileSettings {
description: "Core BMS framework bindings",
..Default::default()
};
generate_lad_file(
&type_registry,
&function_registry,
&global_registry,
&settings,
);
Ok(())
}