conduit_cli/core/engine/manager/
export.rs1use std::path::PathBuf;
2
3use crate::{
4 core::{
5 engine::{io::conduit::ConduitModpackManager, manager::ProjectManager},
6 schemas::modpacks::modrinth::ModrinthIndex,
7 },
8 errors::ConduitResult,
9};
10
11#[derive(Debug, Clone)]
12pub enum ModpackType {
13 Conduit,
14 Mrpack { index: ModrinthIndex },
15}
16
17impl ProjectManager {
18 pub async fn export(
19 &self,
20 modpack_type: ModpackType,
21 path: PathBuf,
22 ) -> ConduitResult<ConduitModpackManager> {
23 let manifest = self.ctx.manifest.read().await.clone();
24 let lock = self.ctx.lockfile.read().await.clone();
25 let include = self.ctx.includefile.read().await.clone();
26
27 let modpack = match modpack_type {
28 ModpackType::Conduit => ConduitModpackManager::new(
29 path,
30 manifest,
31 lock,
32 include,
33 &self.project_root.clone(),
34 )?,
35 #[allow(unused)]
36 ModpackType::Mrpack { index } => {
37 unimplemented!();
38 }
39 };
40
41 Ok(modpack)
42 }
43}