#Starts all the addon modules
sub start {
#Get a list of modules that we have loaded
my $modules = load_modules( "PMBot::Listener", "PMBot::Processor" );
#print Dumper($modules);
#Start them
foreach my $category ( values %$modules ) {
foreach my $module (@$category) {
$module->start();
}
}
}
#Dynamic module loader for listeners
sub load_modules {
my @modules_to_load = @_;
my %modules;
my @module_paths;
#print Dumper(@modules_to_load);
#Construct a full path to the .pm file(s)
#Also populate the hash with data regarding the modules
foreach my $inc_path (@INC) {
foreach my $module_name (@modules_to_load) {
my $path = $module_name;
$path =~ s/::/\//;
my $full_path = $inc_path . "/" . $path . "/";
if ( -e $full_path ) {
foreach my $module ( glob "$full_path*.pm" ) {
require $module;
my $full_module_name = $module_name . "::"
. ( fileparse( $module, ".pm" ) );
push @{ $modules{$module_name} }, ($full_module_name);
}
}
}
}
return \%modules;
}