+ if ($content=~/((?:use|require)\s+)?IkiWiki::Setup::(\w+)/) {
+ $config{setuptype}=$2;
+ if ($1) {
+ error sprintf(gettext("cannot load %s in safe mode"), $file)
+ if $safemode;
+ no warnings;
+ eval IkiWiki::possibly_foolish_untaint($content);
+ error("$file: ".$@) if $@;
+ }
+ else {
+ eval qq{require IkiWiki::Setup::$config{setuptype}};
+ error $@ if $@;
+ "IkiWiki::Setup::$config{setuptype}"->loaddump(IkiWiki::possibly_foolish_untaint($content));
+ }
+ }
+ else {
+ error sprintf(gettext("failed to parse %s"), $file);
+ }
+}
+
+sub dump ($) {
+ my $file=IkiWiki::possibly_foolish_untaint(shift);
+
+ eval qq{require IkiWiki::Setup::$config{setuptype}};
+ error $@ if $@;
+ my @dump="IkiWiki::Setup::$config{setuptype}"->gendump(
+ "Setup file for ikiwiki.",
+ "",
+ "Passing this to ikiwiki --setup will make ikiwiki generate",
+ "wrappers and build the wiki.",
+ "",
+ "Remember to re-run ikiwiki --setup any time you edit this file.",
+ );
+
+ open (OUT, ">", $file) || die "$file: $!";
+ print OUT "$_\n" foreach @dump;
+ close OUT;