refactor
parent
d3cad5d2ca
commit
0b6dd9247b
|
@ -28,9 +28,9 @@ sub load ($) { # {{{
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
sub merge ($) {
|
sub merge ($) {
|
||||||
|
# Merge setup into existing config and untaint.
|
||||||
my %setup=%{shift()};
|
my %setup=%{shift()};
|
||||||
|
|
||||||
# Merge setup into existing config and untaint.
|
|
||||||
if (exists $setup{add_plugins}) {
|
if (exists $setup{add_plugins}) {
|
||||||
push @{$setup{add_plugins}}, @{$config{add_plugins}};
|
push @{$setup{add_plugins}}, @{$config{add_plugins}};
|
||||||
}
|
}
|
||||||
|
@ -71,6 +71,35 @@ sub merge ($) {
|
||||||
}
|
}
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
|
sub getsetup () { #{{{
|
||||||
|
# Gets all available setup data from all plugins. Returns an ordered list of
|
||||||
|
# [plugin, setup] pairs.
|
||||||
|
my @ret;
|
||||||
|
|
||||||
|
# Load all plugins, so that all setup options are available.
|
||||||
|
# (But skip a few problematic external demo plugins.)
|
||||||
|
my @plugins=grep { ! /^(externaldemo|pythondemo|\Q$config{rcs}\E)$/ }
|
||||||
|
sort(IkiWiki::listplugins());
|
||||||
|
unshift @plugins, $config{rcs} if $config{rcs}; # rcs plugin 1st
|
||||||
|
foreach my $plugin (@plugins) {
|
||||||
|
eval { IkiWiki::loadplugin($plugin) };
|
||||||
|
if (exists $IkiWiki::hooks{checkconfig}{$plugin}{call}) {
|
||||||
|
my @s=eval { $IkiWiki::hooks{checkconfig}{$plugin}{call}->() };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $plugin (@plugins) {
|
||||||
|
if (exists $IkiWiki::hooks{getsetup}{$plugin}{call}) {
|
||||||
|
# use an array rather than a hash, to preserve order
|
||||||
|
my @s=eval { $IkiWiki::hooks{getsetup}{$plugin}{call}->() };
|
||||||
|
next unless @s;
|
||||||
|
push @ret, [ $plugin, \@s ],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return @ret;
|
||||||
|
} #}}}
|
||||||
|
|
||||||
sub dump ($) { #{{{
|
sub dump ($) { #{{{
|
||||||
my $file=IkiWiki::possibly_foolish_untaint(shift);
|
my $file=IkiWiki::possibly_foolish_untaint(shift);
|
||||||
|
|
||||||
|
|
|
@ -89,29 +89,12 @@ sub gendump ($) { #{{{
|
||||||
# disable logging to syslog while dumping
|
# disable logging to syslog while dumping
|
||||||
$config{syslog}=0;
|
$config{syslog}=0;
|
||||||
|
|
||||||
push @ret, "\t# basic setup";
|
|
||||||
push @ret, dumpvalues(\%setup, IkiWiki::getsetup());
|
push @ret, dumpvalues(\%setup, IkiWiki::getsetup());
|
||||||
|
foreach my $pair (IkiWiki::Setup::getsetup()) {
|
||||||
# Load all plugins, so that all setup options are available.
|
my $plugin=$pair->[0];
|
||||||
# (But skip a few problematic external demo plugins.)
|
my $setup=$pair->[1];
|
||||||
my @plugins=grep { ! /^(externaldemo|pythondemo|\Q$config{rcs}\E)$/ }
|
push @ret, "", "\t# $plugin plugin";
|
||||||
sort(IkiWiki::listplugins());
|
push @ret, dumpvalues(\%setup, @{$setup});
|
||||||
unshift @plugins, $config{rcs} if $config{rcs}; # rcs plugin 1st
|
|
||||||
foreach my $plugin (@plugins) {
|
|
||||||
eval { IkiWiki::loadplugin($plugin) };
|
|
||||||
if (exists $IkiWiki::hooks{checkconfig}{$plugin}{call}) {
|
|
||||||
my @s=eval { $IkiWiki::hooks{checkconfig}{$plugin}{call}->() };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach my $id (@plugins) {
|
|
||||||
if (exists $IkiWiki::hooks{getsetup}{$id}{call}) {
|
|
||||||
# use an array rather than a hash, to preserve order
|
|
||||||
my @s=eval { $IkiWiki::hooks{getsetup}{$id}{call}->() };
|
|
||||||
next unless @s;
|
|
||||||
push @ret, "", "\t# $id plugin";
|
|
||||||
push @ret, dumpvalues(\%setup, @s);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unshift @ret,
|
unshift @ret,
|
||||||
|
|
Loading…
Reference in New Issue