feat: dynamic feature registration
What does this PR add? This PR adds annotation processors that automatically collect implementations at compile time. This is done using Kotlin Symbol Processing (KSP).
Why?
The motivation behind this is removing and adding modules without having to edit the ModuleManager class what would make module creation/removal easier and faster.
Changes
- [x] Implement the module processor
- [x] Implement the command processor
- [x] Implement only in dev option for modules and commands
I did not know about those kotlin processors yet. This is definitely a cool feature. But it does not bring a big benifit to the code base while making it more complicated for new contributors. Sure it is like 5s faster to add a new module which took 2h to make (+
0.069 %efficiency)
+0.069% efficiency is better than +0 :pray:
@1zun4 @SenkJu opinion?
It looks like SpringBoot annotations 😄
@1zun4 @SenkJu opinion?
Looks fine to me. Should be merged before too many conflicts appear.
I'm not sure what exactly this does. Since it doesn't affect my code, @1zun4 and @superblaubeere27 should decide.