3 package IkiWiki::Setup;
7 use open qw{:utf8 :std};
9 # This hashref is where setup files store settings while they're being
10 # loaded. It is not used otherwise.
14 my $setup=IkiWiki::possibly_foolish_untaint(shift);
15 delete $config{setup};
16 #translators: The first parameter is a filename, and the second
17 #translators: is a (probably not translated) error message.
18 open (IN, $setup) || error(sprintf(gettext("cannot read %s: %s"), $setup, $!));
24 ($code)=$code=~/(.*)/s;
28 error("$setup: ".$@) if $@;
39 my %setup=IkiWiki::Setup::load($config{setup});
41 $setup{plugin}=$config{plugin};
42 if (exists $setup{add_plugins}) {
43 push @{$setup{plugin}}, @{$setup{add_plugins}};
44 delete $setup{add_plugins};
46 if (exists $setup{exclude}) {
47 push @{$config{wiki_file_prune_regexps}}, $setup{exclude};
50 if (! $config{render} && (! $config{refresh} || $config{wrappers})) {
51 debug(gettext("generating wrappers.."));
52 my @wrappers=@{$setup{wrappers}};
53 delete $setup{wrappers};
54 my %startconfig=(%config);
55 foreach my $wrapper (@wrappers) {
56 %config=(%startconfig, rebuild => 0, verbose => 0, %setup, %{$wrapper});
58 if (! $config{cgi} && ! $config{post_commit}) {
59 $config{post_commit}=1;
63 %config=(%startconfig);
66 foreach my $c (keys %setup) {
67 next if $c eq 'syslog';
68 if (defined $setup{$c}) {
69 if (! ref $setup{$c}) {
70 $config{$c}=IkiWiki::possibly_foolish_untaint($setup{$c});
72 elsif (ref $setup{$c} eq 'ARRAY') {
73 $config{$c}=[map { IkiWiki::possibly_foolish_untaint($_) } @{$setup{$c}}]
75 elsif (ref $setup{$c} eq 'HASH') {
76 foreach my $key (keys %{$setup{$c}}) {
77 $config{$c}{$key}=IkiWiki::possibly_foolish_untaint($setup{$c}{$key});
86 if (! $config{refresh}) {
93 if ($config{render}) {
97 if (! $config{refresh}) {
98 debug(gettext("rebuilding wiki.."));
101 debug(gettext("refreshing wiki.."));
108 debug(gettext("done"));