refactor
parent
d3cad5d2ca
commit
0b6dd9247b
|
@ -28,9 +28,9 @@ sub load ($) { # {{{
|
|||
} #}}}
|
||||
|
||||
sub merge ($) {
|
||||
# Merge setup into existing config and untaint.
|
||||
my %setup=%{shift()};
|
||||
|
||||
# Merge setup into existing config and untaint.
|
||||
if (exists $setup{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 ($) { #{{{
|
||||
my $file=IkiWiki::possibly_foolish_untaint(shift);
|
||||
|
||||
|
|
|
@ -89,29 +89,12 @@ sub gendump ($) { #{{{
|
|||
# disable logging to syslog while dumping
|
||||
$config{syslog}=0;
|
||||
|
||||
push @ret, "\t# basic setup";
|
||||
push @ret, dumpvalues(\%setup, IkiWiki::getsetup());
|
||||
|
||||
# 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 $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);
|
||||
}
|
||||
foreach my $pair (IkiWiki::Setup::getsetup()) {
|
||||
my $plugin=$pair->[0];
|
||||
my $setup=$pair->[1];
|
||||
push @ret, "", "\t# $plugin plugin";
|
||||
push @ret, dumpvalues(\%setup, @{$setup});
|
||||
}
|
||||
|
||||
unshift @ret,
|
||||
|
|
Loading…
Reference in New Issue