From 902d1a724d38156e59f3051d8cd33dd26bbe5f03 Mon Sep 17 00:00:00 2001 From: Iain Laird Date: Mon, 14 Jun 2021 20:01:17 +0100 Subject: [PATCH] mod_info can now accept an object in version field --- src/gui/mod_list.rs | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/gui/mod_list.rs b/src/gui/mod_list.rs index 60a6d92..fa2ba27 100644 --- a/src/gui/mod_list.rs +++ b/src/gui/mod_list.rs @@ -547,6 +547,7 @@ impl ModList { version )) } else { + dbg!(entry.path()); None } }) @@ -669,13 +670,36 @@ impl Display for UpdateStatus { pub struct UpdateStatusTTPatch(pub UpdateStatus); +#[derive(Debug, Clone, Deserialize)] +#[serde(untagged)] +enum VersionUnion { + String(String), + Object(ModVersion) +} + +impl Display for VersionUnion { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> { + let output: String = match self { + VersionUnion::String(s) => s.to_string(), + VersionUnion::Object(o) => o.to_string() + }; + write!(f, "{}", output) + } +} + +impl From for String { + fn from(version_union: VersionUnion) -> Self { + version_union.to_string() + } +} + #[derive(Debug, Clone, Deserialize)] pub struct ModEntry { pub id: String, name: String, #[serde(default)] author: String, - version: String, + version: VersionUnion, description: String, #[serde(alias = "gameVersion")] game_version: String,