Skip to main content

conduit_cli/core/project/
initializer.rs

1use crate::core::error::CoreResult;
2use crate::core::io::project::{ConduitConfig, InstanceType, ProjectFiles};
3use crate::core::io::server::config::ServerConfig;
4use crate::core::paths::CorePaths;
5
6pub struct InitParams {
7    pub name: Option<String>,
8    pub instance_type: Option<InstanceType>,
9    pub mc_version: Option<String>,
10    pub loader: Option<String>,
11}
12
13pub fn init_project(paths: &CorePaths, params: InitParams) -> CoreResult<ConduitConfig> {
14    let mut config = ConduitConfig::default();
15
16    if let Some(n) = params.name {
17        config.name = n;
18    }
19    if let Some(t) = params.instance_type.clone() {
20        config.instance_type = t;
21    }
22    if let Some(v) = params.mc_version {
23        config.mc_version = v;
24    }
25    if let Some(l) = params.loader {
26        config.loader = l;
27    }
28
29    ProjectFiles::save_manifest(paths, &config)?;
30
31    if let Some(InstanceType::Server) = params.instance_type {
32        let default_config = ServerConfig::default();
33        default_config.save(paths.config_path())?;
34    }
35
36    Ok(config)
37}