diff options
-rw-r--r-- | IkiWiki/Setup/Standard.pm | 4 | ||||
-rwxr-xr-x | ikiwiki | 91 |
2 files changed, 51 insertions, 44 deletions
diff --git a/IkiWiki/Setup/Standard.pm b/IkiWiki/Setup/Standard.pm index d5135f3eb..56ed5ab3b 100644 --- a/IkiWiki/Setup/Standard.pm +++ b/IkiWiki/Setup/Standard.pm @@ -24,7 +24,7 @@ sub setup_standard { my %startconfig=(%config); foreach my $wrapper (@{$setup{wrappers}}) { %config=(%startconfig, verbose => 0, %setup, %{$wrapper}); - checkoptions(); + checkconfig(); gen_wrapper(); } %config=(%startconfig); @@ -36,7 +36,7 @@ sub setup_standard { } $config{rebuild}=1; - checkoptions(); + checkconfig(); lockwiki(); refresh(); @@ -2,13 +2,12 @@ $ENV{PATH}="/usr/local/bin:/usr/bin:/bin"; -use lib '.'; # For use without installation, removed by Makefile. - package IkiWiki; use warnings; use strict; use File::Spec; use HTML::Template; +use lib '.'; # For use without installation, removed by Makefile. use vars qw{%config %links %oldlinks %oldpagemtime %renderedfiles %pagesources}; @@ -37,46 +36,52 @@ our %config=( #{{{ adminuser => undef, ); #}}} -# option parsing #{{{ -if (! exists $ENV{WRAPPED_OPTIONS}) { - eval q{use Getopt::Long}; - GetOptions( - "setup|s=s" => \$config{setup}, - "wikiname=s" => \$config{wikiname}, - "verbose|v!" => \$config{verbose}, - "rebuild!" => \$config{rebuild}, - "wrapper:s" => sub { $config{wrapper}=$_[1] ? $_[1] : "ikiwiki-wrap" }, - "wrappermode=i" => \$config{wrappermode}, - "svn!" => \$config{svn}, - "anonok!" => \$config{anonok}, - "cgi!" => \$config{cgi}, - "url=s" => \$config{url}, - "cgiurl=s" => \$config{cgiurl}, - "historyurl=s" => \$config{historyurl}, - "diffurl=s" => \$config{diffurl}, - "exclude=s@" => sub { - $config{wiki_file_prune_regexp}=qr/$config{wiki_file_prune_regexp}|$_[1]/; - }, - "adminuser=s@" => sub { push @{$config{adminuser}}, $_[1] }, - "templatedir=s" => sub { $config{templatedir}=possibly_foolish_untaint($_[1]) }, - ) || usage(); - - if (! $config{setup}) { - usage() unless @ARGV == 2; - $config{srcdir} = possibly_foolish_untaint(shift); - $config{destdir} = possibly_foolish_untaint(shift); - checkoptions(); - } -} -else { - # wrapper passes a full config structure in the environment - # variable - eval possibly_foolish_untaint($ENV{WRAPPED_OPTIONS}); - checkoptions(); -} -#}}} - -sub checkoptions { #{{{ +sub getconfig () { #{{{ + if (! exists $ENV{WRAPPED_OPTIONS}) { + eval q{use Getopt::Long}; + GetOptions( + "setup|s=s" => \$config{setup}, + "wikiname=s" => \$config{wikiname}, + "verbose|v!" => \$config{verbose}, + "rebuild!" => \$config{rebuild}, + "wrappermode=i" => \$config{wrappermode}, + "svn!" => \$config{svn}, + "anonok!" => \$config{anonok}, + "cgi!" => \$config{cgi}, + "url=s" => \$config{url}, + "cgiurl=s" => \$config{cgiurl}, + "historyurl=s" => \$config{historyurl}, + "diffurl=s" => \$config{diffurl}, + "exclude=s@" => sub { + $config{wiki_file_prune_regexp}=qr/$config{wiki_file_prune_regexp}|$_[1]/; + }, + "adminuser=s@" => sub { + push @{$config{adminuser}}, $_[1] + }, + "templatedir=s" => sub { + $config{templatedir}=possibly_foolish_untaint($_[1]) + }, + "wrapper:s" => sub { + $config{wrapper}=$_[1] ? $_[1] : "ikiwiki-wrap" + }, + ) || usage(); + + if (! $config{setup}) { + usage() unless @ARGV == 2; + $config{srcdir} = possibly_foolish_untaint(shift); + $config{destdir} = possibly_foolish_untaint(shift); + checkconfig(); + } + } + else { + # wrapper passes a full config structure in the environment + # variable + eval possibly_foolish_untaint($ENV{WRAPPED_OPTIONS}); + checkconfig(); + } +} #}}} + +sub checkconfig { #{{{ if ($config{cgi} && ! length $config{url}) { error("Must specify url to wiki with --url when using --cgi"); } @@ -425,6 +430,8 @@ sub globlist_match ($$) { #{{{ } #}}} sub main () { #{{{ + getconfig(); + if ($config{setup}) { require IkiWiki::Setup; setup(); |