Skip to main content

conduit_cli/core/
start_server.rs

1use 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}