From cea5cfa4ab0a0aa3d0871b5d5a5270251c3139f3 Mon Sep 17 00:00:00 2001 From: aecsocket Date: Sat, 6 Dec 2025 23:45:10 +0000 Subject: [PATCH] Add new optional file types (#4854) * Add new optional file types * Fix build * Add signature file type --------- Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com> --- apps/labrinth/src/models/v3/projects.rs | 12 ++++++++++++ apps/labrinth/src/validate/mod.rs | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/apps/labrinth/src/models/v3/projects.rs b/apps/labrinth/src/models/v3/projects.rs index f70d806a..22f5050a 100644 --- a/apps/labrinth/src/models/v3/projects.rs +++ b/apps/labrinth/src/models/v3/projects.rs @@ -950,6 +950,10 @@ impl DependencyType { pub enum FileType { RequiredResourcePack, OptionalResourcePack, + SourcesJar, + DevJar, + JavadocJar, + Signature, Unknown, } @@ -965,7 +969,11 @@ impl FileType { match self { FileType::RequiredResourcePack => "required-resource-pack", FileType::OptionalResourcePack => "optional-resource-pack", + FileType::SourcesJar => "sources-jar", + FileType::DevJar => "dev-jar", + FileType::JavadocJar => "javadoc-jar", FileType::Unknown => "unknown", + FileType::Signature => "signature", } } @@ -973,7 +981,11 @@ impl FileType { match string { "required-resource-pack" => FileType::RequiredResourcePack, "optional-resource-pack" => FileType::OptionalResourcePack, + "sources-jar" => FileType::SourcesJar, + "dev-jar" => FileType::DevJar, + "javadoc-jar" => FileType::JavadocJar, "unknown" => FileType::Unknown, + "signature" => FileType::Signature, _ => FileType::Unknown, } } diff --git a/apps/labrinth/src/validate/mod.rs b/apps/labrinth/src/validate/mod.rs index 6304b61d..9d1d27b7 100644 --- a/apps/labrinth/src/validate/mod.rs +++ b/apps/labrinth/src/validate/mod.rs @@ -221,6 +221,18 @@ async fn validate_minecraft_file( FileType::RequiredResourcePack | FileType::OptionalResourcePack => { return PackValidator.validate_maybe_protected_zip(&mut zip); } + FileType::Signature => { + // Not sure if we have a better way to detect if a file is a signature + // should look into this? + return if ["asc", "gpg", "sig"].contains(&file_extension.as_str()) { + Ok(ValidationResult::Pass) + } else { + Err(ValidationError::InvalidInput( + format!("File extension {file_extension} is invalid for input file").into(), + )) + }; + } + FileType::DevJar | FileType::SourcesJar | FileType::JavadocJar => {}, FileType::Unknown => {} } }