web commit by joey
[ikiwiki.git] / IkiWiki.pm
index 31228883f3cdd83945b34b611902f17fb0c7de02..960d26de93f94e4e95a44098b2b616a3b089f5a2 100644 (file)
@@ -7,7 +7,7 @@ use File::Spec;
 use HTML::Template;
 
 use vars qw{%config %links %oldlinks %oldpagemtime %pagectime
-            %renderedfiles %pagesources %depends %plugins};
+            %renderedfiles %pagesources %depends %hooks};
 
 sub checkconfig () { #{{{
        if ($config{cgi} && ! length $config{url}) {
@@ -16,20 +16,18 @@ sub checkconfig () { #{{{
        if ($config{rss} && ! length $config{url}) {
                error("Must specify url to wiki with --url when using --rss\n");
        }
-       if ($config{hyperestraier} && ! length $config{url}) {
-               error("Must specify --url when using --hyperestraier\n");
-       }
        
        $config{wikistatedir}="$config{srcdir}/.ikiwiki"
                unless exists $config{wikistatedir};
        
-       if ($config{svn}) {
-               require IkiWiki::Rcs::SVN;
-               $config{rcs}=1;
+       if ($config{rcs}) {
+               eval qq{require IkiWiki::Rcs::$config{rcs}};
+               if ($@) {
+                       error("Failed to load RCS module IkiWiki::Rcs::$config{rcs}: $@");
+               }
        }
        else {
                require IkiWiki::Rcs::Stub;
-               $config{rcs}=0;
        }
 
        foreach my $plugin (@{$config{plugin}}) {
@@ -39,6 +37,12 @@ sub checkconfig () { #{{{
                        error("Failed to load plugin $mod: $@");
                }
        }
+
+       if (exists $hooks{checkconfig}) {
+                foreach my $id (keys %{$hooks{checkconfig}}) {
+                        $hooks{checkconfig}{$id}{call}->();
+                }
+        }
 } #}}}
 
 sub error ($) { #{{{
@@ -386,12 +390,14 @@ sub globlist_match ($$) { #{{{
        return 0;
 } #}}}
 
-sub register_plugin ($$$) { # {{{
-       my $type=shift;
-       my $command=shift;
-       my $function=shift;
+sub hook (@) { # {{{
+       my %param=@_;
+       
+       if (! exists $param{type} || ! ref $param{call} || ! exists $param{id}) {
+               error "hook requires type, call, and id parameters";
+       }
        
-       $plugins{$type}{$command}=$function;
+       $hooks{$param{type}}{$param{id}}=\%param;
 } # }}}
 
 1