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