Conversation
All PackageInstaller implementations, for both mod loaders and plugins, now implement the method so it can be required to ensure future implementations don't skip it. Disable/Enable methods are implemented for all plugin installers as well, but the operation is not supported for mod loader packages, so the methods remain optional in the interface.
- Define InstallRulePluginInstaller as the PackageInstaller in registry
for all games that don't use custom one
- GenericProfileInstaller becomes a simple wrapper for calling
PackageInstaller methods
- By default InstallRulePluginInstaller no longer takes the rules as a
constuctor argument, but reads them from Thunderstore ecosystem
schema instead. This allows initiating the installer in registry
before the active game is selected
- Rules can still be passed as arguments to constructor, in which
case those rules are used instead. This is used by
ReturnOfModdingPluginInstaller and can be used for testing
purposes as well
- Installer: use the InstallRulePluginInstaller directly rather than awkwardly access it through GenericProfileInstaller - Shimloader: set install rules used in the tests directly as InstallRulePluginInstaller args rather than accessing them through InstallationRules.RULES - MelonLoader: ensure active game is set before GenericProfileInstaller is initiated, as it now depends on active game internally Current intallation logic tests in the codebase were written when game specific installation rules were hard coded in the code base and the implemenation of GenericProfileInstaller contained convoluted installation logic. Now the installation rules are loaded from Thunderstore ecosystem schema and installation logic is encapsulated in PackageLoader implementations. The tests should be reworked so we have separate test for the GenericProfileInstaller and PackageInstallers. Game specific test cases should be repThe scope of such changes require separate PR. comprehensive test suite for InstallRulePluginInstaller.
ebkr
approved these changes
Apr 13, 2026
|
|
||
| private readonly rule: CoreRuleType | undefined; | ||
| private readonly legacyInstaller: InstallRulePluginInstaller; | ||
| private readonly loaderInstaller: PackageInstaller; |
Owner
There was a problem hiding this comment.
Nit: Might be worth being a little more explicit and calling it "modLoaderInstaller"
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.