can now dump fully functional setup files
parent
cd029da493
commit
1c00717cb2
65
IkiWiki.pm
65
IkiWiki.pm
|
@ -142,6 +142,27 @@ sub getsetup () { #{{{
|
|||
safe => 0, # paranoia
|
||||
rebuild => 0,
|
||||
},
|
||||
wrappers => {
|
||||
type => "string",
|
||||
default => undef,
|
||||
description => "definitions of wrappers to generate",
|
||||
safe => 0,
|
||||
rebuild => 0,
|
||||
},
|
||||
wrapper => {
|
||||
type => "internal",
|
||||
default => undef,
|
||||
description => "wrapper filename",
|
||||
safe => 0,
|
||||
rebuild => 0,
|
||||
},
|
||||
wrappermode => {
|
||||
type => "internal",
|
||||
default => undef,
|
||||
description => "mode of wrapper file",
|
||||
safe => 0,
|
||||
rebuild => 0,
|
||||
},
|
||||
templatedir => {
|
||||
type => "string",
|
||||
default => "$installdir/share/ikiwiki/templates",
|
||||
|
@ -250,6 +271,14 @@ sub getsetup () { #{{{
|
|||
rebuild => 0,
|
||||
},
|
||||
|
||||
exclude => {
|
||||
type => "string",
|
||||
default => undef,
|
||||
example => '\.wav$',
|
||||
description => "regexp of source files to ignore",
|
||||
safe => 0, # regexp
|
||||
rebuild => 1,
|
||||
},
|
||||
wiki_file_prune_regexps => {
|
||||
type => "internal",
|
||||
default => [qr/(^|\/)\.\.(\/|$)/, qr/^\./, qr/\/\./,
|
||||
|
@ -324,20 +353,6 @@ sub getsetup () { #{{{
|
|||
safe => 0,
|
||||
rebuild => 0,
|
||||
},
|
||||
wrapper => {
|
||||
type => "internal",
|
||||
default => undef,
|
||||
description => "wrapper file to generate",
|
||||
safe => 0,
|
||||
rebuild => 0,
|
||||
},
|
||||
wrappermode => {
|
||||
type => "internal",
|
||||
default => undef,
|
||||
description => "mode of wrapper file",
|
||||
safe => 0,
|
||||
rebuild => 0,
|
||||
},
|
||||
setup => {
|
||||
type => "internal",
|
||||
default => undef,
|
||||
|
@ -345,13 +360,27 @@ sub getsetup () { #{{{
|
|||
safe => 0,
|
||||
rebuild => 0,
|
||||
},
|
||||
plugin => {
|
||||
default_plugins => {
|
||||
type => "internal",
|
||||
default => [qw{mdwn link inline htmlscrubber passwordauth
|
||||
openid signinedit lockedit conditional
|
||||
recentchanges parentlinks}],
|
||||
description => "enabled plugins",
|
||||
safe => 0,
|
||||
description => "plugins to enable by default",
|
||||
safe => 1,
|
||||
rebuild => 1,
|
||||
},
|
||||
add_plugins => {
|
||||
type => "string",
|
||||
default => [],
|
||||
description => "plugins to add to the default configuration",
|
||||
safe => 1,
|
||||
rebuild => 1,
|
||||
},
|
||||
disable_plugins => {
|
||||
type => "string",
|
||||
default => [],
|
||||
description => "plugins to disable",
|
||||
safe => 1,
|
||||
rebuild => 1,
|
||||
},
|
||||
libdir => {
|
||||
|
@ -434,7 +463,7 @@ sub loadplugins () { #{{{
|
|||
unshift @INC, possibly_foolish_untaint($config{libdir});
|
||||
}
|
||||
|
||||
loadplugin($_) foreach @{$config{plugin}};
|
||||
loadplugin($_) foreach @{$config{default_plugins}}, @{$config{add_plugins}};
|
||||
|
||||
run_hooks(getopt => sub { shift->() });
|
||||
if (grep /^-/, @ARGV) {
|
||||
|
|
|
@ -36,17 +36,15 @@ sub load ($) { # {{{
|
|||
$raw_setup=undef;
|
||||
|
||||
# Merge setup into existing config and untaint.
|
||||
$setup{plugin}=$config{plugin};
|
||||
if (exists $setup{add_plugins}) {
|
||||
push @{$setup{plugin}}, @{$setup{add_plugins}};
|
||||
delete $setup{add_plugins};
|
||||
push @{$setup{add_plugins}}, @{$config{add_plugins}};
|
||||
}
|
||||
if (exists $setup{exclude}) {
|
||||
push @{$config{wiki_file_prune_regexps}}, $setup{exclude};
|
||||
}
|
||||
foreach my $c (keys %setup) {
|
||||
if (defined $setup{$c}) {
|
||||
if (! ref $setup{$c}) {
|
||||
if (! ref $setup{$c} || ref $setup{$c} eq 'Regexp') {
|
||||
$config{$c}=IkiWiki::possibly_foolish_untaint($setup{$c});
|
||||
}
|
||||
elsif (ref $setup{$c} eq 'ARRAY') {
|
||||
|
|
|
@ -29,15 +29,21 @@ sub dumpline ($$$$) { #{{{
|
|||
|
||||
my $dumpedvalue;
|
||||
if ($type eq 'boolean' || $type eq 'integer') {
|
||||
# avoid quotes
|
||||
$dumpedvalue=$value;
|
||||
}
|
||||
elsif ($type eq 'string' && ref $value eq 'ARRAY' && @$value &&
|
||||
! grep { /[^-A-Za-z0-9_]/ } @$value) {
|
||||
# dump simple array as qw{}
|
||||
$dumpedvalue="[qw{ ".join(" ", @$value)." }]";
|
||||
}
|
||||
else {
|
||||
$dumpedvalue=Dumper($value);
|
||||
chomp $dumpedvalue;
|
||||
$dumpedvalue=~s/^\t//;
|
||||
}
|
||||
|
||||
return "\t$prefix$key=$dumpedvalue,";
|
||||
return "\t$prefix$key => $dumpedvalue,";
|
||||
} #}}}
|
||||
|
||||
sub dumpvalues ($@) { #{{{
|
||||
|
|
10
ikiwiki.in
10
ikiwiki.in
|
@ -28,7 +28,7 @@ sub getconfig () { #{{{
|
|||
"refresh!" => \$config{refresh},
|
||||
"post-commit" => \$config{post_commit},
|
||||
"render=s" => \$config{render},
|
||||
"wrappers!" => \$config{wrappers},
|
||||
"wrappers!" => \$config{genwrappers},
|
||||
"usedirs!" => \$config{usedirs},
|
||||
"prefix-directives!" => \$config{prefix_directives},
|
||||
"getctime" => \$config{getctime},
|
||||
|
@ -68,7 +68,7 @@ sub getconfig () { #{{{
|
|||
$config{wrappermode}=possibly_foolish_untaint($_[1])
|
||||
},
|
||||
"plugin=s@" => sub {
|
||||
push @{$config{plugin}}, $_[1];
|
||||
push @{$config{add_plugins}}, $_[1];
|
||||
},
|
||||
"disable-plugin=s@" => sub {
|
||||
push @{$config{disable_plugins}}, $_[1];
|
||||
|
@ -112,13 +112,15 @@ sub main () { #{{{
|
|||
if ($config{setup}) {
|
||||
require IkiWiki::Setup;
|
||||
IkiWiki::Setup::load($config{setup});
|
||||
if (! $config{render} && ! $config{dumpsetup} &&
|
||||
(! $config{refresh} || $config{wrappers})) {
|
||||
if (@{$config{wrappers}} &&
|
||||
! $config{render} && ! $config{dumpsetup} &&
|
||||
(! $config{refresh} || $config{genwrappers})) {
|
||||
debug(gettext("generating wrappers.."));
|
||||
require IkiWiki::Wrapper;
|
||||
my %origconfig=(%config);
|
||||
my @wrappers=@{$config{wrappers}};
|
||||
delete $config{wrappers};
|
||||
delete $config{genwrappers};
|
||||
foreach my $wrapper (@wrappers) {
|
||||
%config=(%origconfig,
|
||||
rebuild => 0,
|
||||
|
|
Loading…
Reference in New Issue