Simple Plugin System
add a plugin system so we can move the atl specific things away from tux
requirements for the plugin system that need to be figured out
- [ ] be able to edit db and add custom things to db
- [x] create cogs
- [ ] add packages
i think for the be able to edit db portion we shift the cases stuff away from being enums (for custom case types) and also add a table called custom with the parameters plugin id, id, and data (which can just be json or something similar)
somewhat accomplished by #828
some ideas i had came up with was having the poetry script run and check a plugin/ directory for a toml file (pyprojecy.toml) for dependcys and also a configuration file in the plugin's folder that specifiys the database modifications and giving plugins their own database directorys per plugin as needed
had some ideas regarding this
- for packages we can probably have like some top level info and there you can describe what packages this needs, and other info that we could like display in like a extension view (maybe for like toggling extensions while the bots on) like this:
"""
Name: Example Plugin
Description: Example for issue #704
Source: https://gist.github.com/example/79ershm8gb8mudf8jughbke5w8tuevms9ftg9sj9vrm7tgshmeb9gfduiovjm
Authors: foo, bar
Version: 1.0.0
Deps: foo==1.2.3, bar>=4.5.6
"""
- for dependencies now that we use sqlmodel which is fully python we might be able to let extensions like somehow add new models directly from the code, alternatively each extension could just get 1 text field they can use for whatever (like json, binary encoding, etc)
once v0.1.0 is out this can most likely be implemented in a update like v0.2.0, or maybe just directly in the v0.1.0 release post pr merge depending on complexity
re: @meatharvester as they recently did some extension work on the main v0.1.0 pr