conduit_cli/core/project/
initializer.rs1use 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}