X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/b1560f7275464f2fc1a38fac76855ce065964f28..278ae9afea19b20058e7ed5290305ca69c71a649:/IkiWiki/Setup/Standard.pm diff --git a/IkiWiki/Setup/Standard.pm b/IkiWiki/Setup/Standard.pm index 87db648e0..2420a6644 100644 --- a/IkiWiki/Setup/Standard.pm +++ b/IkiWiki/Setup/Standard.pm @@ -3,86 +3,63 @@ # Parameters to import should be all the standard ikiwiki config stuff, # plus an array of wrappers to set up. +package IkiWiki::Setup::Standard; + use warnings; use strict; -use IkiWiki::Wrapper; -use IkiWiki::Render; -package IkiWiki::Setup::Standard; +sub import { #{{{ + $IkiWiki::Setup::raw_setup=$_[1]; +} #}}} -sub import { - IkiWiki::setup_standard(@_); -} - -package IkiWiki; +sub generate (@) { #{{{ + my %setup=@_; -sub setup_standard { - my %setup=%{$_[1]}; + eval q{use Data::Dumper}; + error($@) if $@; + local $Data::Dumper::Terse=1; - $setup{plugin}=$config{plugin}; - if (exists $setup{add_plugins}) { - push @{$setup{plugin}}, @{$setup{add_plugins}}; - delete $setup{add_plugins}; - } - if (exists $setup{exclude}) { - push @{$config{wiki_file_prune_regexps}}, $setup{exclude}; - } + my @ret="#!/usr/bin/perl +# 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. - if (! $config{render} && (! $config{refresh} || $config{wrappers})) { - debug(gettext("generating wrappers..")); - my @wrappers=@{$setup{wrappers}}; - delete $setup{wrappers}; - my %startconfig=(%config); - foreach my $wrapper (@wrappers) { - %config=(%startconfig, rebuild => 0, verbose => 0, %setup, %{$wrapper}); - checkconfig(); - if (! $config{cgi} && ! $config{post_commit}) { - $config{post_commit}=1; - } - gen_wrapper(); - } - %config=(%startconfig); - } +use IkiWiki::Setup::Standard {"; + + foreach my $id (sort keys %{$IkiWiki::hooks{getsetup}}) { + my @setup=$IkiWiki::hooks{getsetup}{$id}{call}->(); + return unless @setup; + push @ret, "\t# $id plugin"; + while (@setup) { + my $key=shift @setup; + my %info=%{shift @setup}; + + push @ret, "\t# ".$info{description} if exists $info{description}; - foreach my $c (keys %setup) { - next if $c eq 'syslog'; - if (defined $setup{$c}) { - if (! ref $setup{$c}) { - $config{$c}=possibly_foolish_untaint($setup{$c}); + my $value=undef; + my $prefix="#"; + if (exists $setup{$key} && defined $setup{$key}) { + $value=$setup{$key}; + $prefix=""; } - elsif (ref $setup{$c} eq 'ARRAY') { - $config{$c}=[map { possibly_foolish_untaint($_) } @{$setup{$c}}] + elsif (exists $info{default}) { + $value=$info{default}; } - elsif (ref $setup{$c} eq 'HASH') { - foreach my $key (keys %{$setup{$c}}) { - $config{$c}{$key}=possibly_foolish_untaint($setup{$c}{$key}); - } + elsif (exists $info{example}) { + $value=$info{example}; } + + my $dumpedvalue=Dumper($value); + chomp $dumpedvalue; + push @ret, "\t$prefix$key=$dumpedvalue,"; } - else { - $config{$c}=undef; - } + push @ret, ""; } - if ($config{render}) { - commandline_render(); - } - elsif (! $config{refresh}) { - $config{rebuild}=1; - debug(gettext("rebuilding wiki..")); - } - else { - debug(gettext("refreshing wiki..")); - } - - loadplugins(); - checkconfig(); - lockwiki(); - loadindex(); - refresh(); - - debug(gettext("done")); - saveindex(); -} + push @ret, "}"; + return @ret; +} #}}} 1