summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Setup/Standard.pm4
-rwxr-xr-xikiwiki91
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();
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();