30 lines
674 B
Rust
30 lines
674 B
Rust
use serde::{Deserialize, Serialize};
|
|
|
|
use crate::model::{ModPack, SimpleMod};
|
|
|
|
#[derive(Debug, Deserialize, Serialize)]
|
|
#[serde(rename_all = "snake_case")]
|
|
pub enum ManifestKind {
|
|
V1(Vec<SimpleMod>),
|
|
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,
|
|
}
|
|
}
|
|
}
|