X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/12422e98901cef2774b15ec0e6468e88d4d0a6c6..3a98572da86ec43ad167de659ec7ccd386103fcb:/IkiWiki.pm diff --git a/IkiWiki.pm b/IkiWiki.pm index e3bdc8d83..960d26de9 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -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,9 +16,6 @@ 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}; @@ -40,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 ($) { #{{{ @@ -387,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