X-Git-Url: http://git.tremily.us/?p=ikiwiki.git;a=blobdiff_plain;f=ikiwiki;h=a9a0c8ff46fe3585443994895fe9aa64526f6dfc;hp=6f66c5ea4f5abec26f2ce8947407ac934bbf3a19;hb=0943c375d42862c6db9561787ebd9ddae48d890a;hpb=5513fb46543f28e531ed4ac0826e4651b10af702 diff --git a/ikiwiki b/ikiwiki index 6f66c5ea4..a9a0c8ff4 100755 --- a/ikiwiki +++ b/ikiwiki @@ -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();