source: gsdl/tags/start/gsdl/perllib/plugin.pm@ 18481

Last change on this file since 18481 was 4, checked in by sjboddie, 26 years ago

Initial revision

  • Property svn:keywords set to Author Date Id Revision
File size: 1.1 KB
Line 
1# functions to handle using the plugins
2
3package plugin;
4
5
6sub load_plugins {
7 my ($collection, $plugin_list) = @_;
8 my @plugin_objects = ();
9
10 foreach $plugin (@$plugin_list) {
11 # find the plugin
12 if (-e "$ENV{'GSDLHOME'}/collect/$collection/lib/plugins/${plugin}.pm") {
13 require "$ENV{'GSDLHOME'}/collect/$collection/lib/plugins/${plugin}.pm";
14
15 } elsif (-e "$ENV{'GSDLHOME'}/lib/plugins/${plugin}.pm") {
16 require "$ENV{'GSDLHOME'}/lib/plugins/${plugin}.pm";
17
18 } else {
19 die "ERROR - couldn't find plugin $plugin\n";
20 }
21
22 # create a plugin object
23 my ($plugobj);
24 eval ("\$plugobj = new $plugin()");
25 die "$@" if $@;
26
27 # add this object to the list
28 push (@plugin_objects, $plugobj);
29 }
30
31 return \@plugin_objects;
32}
33
34sub read {
35 my ($pluginfo, $base_dir, $file, $metadata, $processor) = @_;
36
37 # pass this file by each of the plugins in turn until one
38 # is found which will process it
39 foreach $plugobj (@$pluginfo) {
40 if ($plugobj->read($pluginfo, $base_dir, $file,
41 $metadata, $processor)) {
42 return;
43 }
44 }
45
46 print STDERR "WARNING - no plugin could process $base_dir$file\n";
47}
48
49
501;
Note: See TracBrowser for help on using the repository browser.