Created: Wed, 23 Jul 2008
Contributors: David Futcher
Packages affected: Debomatic
Support for modules/plugins should be added to Debomatic to allow easy extension of the application.
Implementing this spec would allow users who only want to use the core functionalities of Debomatic to completely remove extra ones (like GPG or Lintian support). It will also allow developers to write new modules to extend the current Debomatic functionalities or write completely new ones, making the application much more felxible and able to cater for individual developers needs.
Jono uses Debomatic to test build applications before uploading them to production servers. He wants to extend Debomatic to use multiple different validity checking applications after build.
Kate only wants to use the core functionalities of Debomatic and doesnt use extras like GPG and Lintian. Her testbuild server is very limited and she needs to save space on her hard drive for packages.
This should be implemented using 'hooks' that are run after something happens (for example: the module is loaded, a build is about to start, a build just finished, Debomatic is about to shutdown etc.). When once of these events occur Debomatic should look through all the modules loaded to see if they implement that hook. If they do, Debomatic executes their function and moves on to check the rest of the modules.
Modules should be held in their own, dedicated directory.
Minimal changes will need to be made to existing code/files. A dedicated file containing code for the modules system should be made to minimise the impact on other files. The only changes made to existing code will be for telling the modules system that a hook event has just occurred (a build has just finished etc.).
Changes will need to be made to the configuration file to let users configure their modules system.