diff options
author | Jesse Plamondon-Willard <github@jplamondonw.com> | 2018-05-05 22:18:52 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <github@jplamondonw.com> | 2018-05-05 22:18:52 -0400 |
commit | 5121ae7b4a0b97b9e227b67903d0c6c88f3a3982 (patch) | |
tree | 23d9e077755c86cb963d8df8743878b919b9ec3a /src/SMAPI/Framework/ModLoading | |
parent | 30bf40ab2b03600b66091a6cbd61515cf0721844 (diff) | |
download | SMAPI-5121ae7b4a0b97b9e227b67903d0c6c88f3a3982.tar.gz SMAPI-5121ae7b4a0b97b9e227b67903d0c6c88f3a3982.tar.bz2 SMAPI-5121ae7b4a0b97b9e227b67903d0c6c88f3a3982.zip |
enforce mod ID convention (only alphanumeric, hyphen, dot, and underscore)
Diffstat (limited to 'src/SMAPI/Framework/ModLoading')
-rw-r--r-- | src/SMAPI/Framework/ModLoading/ModResolver.cs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/SMAPI/Framework/ModLoading/ModResolver.cs b/src/SMAPI/Framework/ModLoading/ModResolver.cs index a9896278..cec37fca 100644 --- a/src/SMAPI/Framework/ModLoading/ModResolver.cs +++ b/src/SMAPI/Framework/ModLoading/ModResolver.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Text.RegularExpressions; using StardewModdingAPI.Framework.Exceptions; using StardewModdingAPI.Framework.ModData; using StardewModdingAPI.Framework.Models; @@ -194,8 +195,15 @@ namespace StardewModdingAPI.Framework.ModLoading missingFields.Add(nameof(IManifest.UniqueID)); if (missingFields.Any()) + { mod.SetStatus(ModMetadataStatus.Failed, $"its manifest is missing required fields ({string.Join(", ", missingFields)})."); + continue; + } } + + // validate ID format + if (Regex.IsMatch(mod.Manifest.UniqueID, "[^a-z0-9_.-]", RegexOptions.IgnoreCase)) + mod.SetStatus(ModMetadataStatus.Failed, "its manifest specifies an invalid ID (IDs must only contain letters, numbers, underscores, periods, or hyphens)."); } // validate IDs are unique |