aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeckoEidechse <gecko.eidechse+git@pm.me>2024-07-05 23:11:58 +0200
committerGeckoEidechse <gecko.eidechse+git@pm.me>2024-07-05 23:11:58 +0200
commitd4273d698523f7b8966bbee83beecc8131a21678 (patch)
treea346de8d17efa0d3157b28bdb0a32b7f268469a8
parent2d57c5d0ce5fffdf99e84fb5be6a24c9b1eed708 (diff)
downloadNorthstarLauncher-feat/overhaul-mod-loading-locations.tar.gz
NorthstarLauncher-feat/overhaul-mod-loading-locations.zip
feat: Require core Northstar mods to be formatted starting with `Northstar.` in their mod namefeat/overhaul-mod-loading-locations
-rw-r--r--primedev/mods/modmanager.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/primedev/mods/modmanager.cpp b/primedev/mods/modmanager.cpp
index f0ddb0f5..b99c8761 100644
--- a/primedev/mods/modmanager.cpp
+++ b/primedev/mods/modmanager.cpp
@@ -644,9 +644,20 @@ void ModManager::LoadMods()
std::filesystem::directory_iterator remoteModsDir = fs::directory_iterator(GetRemoteModFolderPath());
std::filesystem::directory_iterator thunderstoreModsDir = fs::directory_iterator(GetThunderstoreLegacyModFolderPath());
+ // Set up regex for `Northstar.*` pattern
+ std::regex northstar_pattern(R"(.*\\Northstar\..+)");
for (fs::directory_entry dir : coreModsDir)
+ {
+ if (!std::regex_match(dir.path().string(), northstar_pattern))
+ {
+ spdlog::warn(
+ "The following directory did not match 'Northstar.*' and is most likely an incorrectly manually installed mod: {}",
+ dir.path().string());
+ continue; // skip loading mod that doesn't match
+ }
if (fs::exists(dir.path() / "mod.json"))
modDirs.push_back(dir.path());
+ }
for (fs::directory_entry dir : manualModsDir)
if (fs::exists(dir.path() / "mod.json"))