use serde::{Deserialize, Serialize}; use crate::model::{ModPack, SimpleMod}; #[derive(Debug, Deserialize, Serialize)] #[serde(rename_all = "snake_case")] pub enum ManifestKind { V1(Vec), V2(ModPack), } impl ManifestKind { pub fn simple_mods_list(&self) -> &[SimpleMod] { match self { Self::V1(mods) => mods, Self::V2(pack) => match &pack.simple_mods_list { Some(list) => list, None => &[], }, } } pub fn into_mod_pack(self) -> ModPack { match self { Self::V1(mods) => mods.into(), Self::V2(pack) => pack, } } }