conduit_cli/core/
start_server.rs1use crate::core::events::CoreCallbacks;
2use crate::core::io::project::ProjectFiles;
3use crate::core::paths::CorePaths;
4use crate::server_launcher::ServerLauncher;
5use std::error::Error;
6
7pub async fn start_server(
8 paths: &CorePaths,
9 callbacks: &mut dyn CoreCallbacks,
10 show_logs: bool,
11 show_gui: bool,
12) -> Result<(), Box<dyn Error>> {
13 let config = ProjectFiles::load_manifest(paths)?;
14
15 let launcher = match config.loader.to_lowercase().as_str() {
16 s if s.contains("neoforge") => ServerLauncher::Neoforge,
17 _ => return Err(format!("Unsupported loader for launching: {}", config.loader).into()),
18 };
19
20 launcher
21 .launch(
22 paths.project_dir().to_path_buf(),
23 show_logs,
24 show_gui,
25 callbacks,
26 )
27 .await;
28
29 Ok(())
30}