Skip to main content

conduit_cli/core/engine/manager/
export.rs

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