X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/a2e98e7ffc50626e6259713094b3b388e8460cd1..409e62021c5c05e0184a61d0692697c10a0b8283:/ikiwiki?ds=sidebyside

diff --git a/ikiwiki b/ikiwiki
index 5b4972ab7..a10876a96 100755
--- a/ikiwiki
+++ b/ikiwiki
@@ -13,43 +13,9 @@ sub usage () { #{{{
 
 sub getconfig () { #{{{
 	if (! exists $ENV{WRAPPED_OPTIONS}) {
-		%config=(
-			wiki_file_prune_regexp => qr{((^|/).svn/|\.\.|^\.|\/\.|\.html?$|\.rss$)},
-			wiki_link_regexp => qr/\[\[(?:([^\s\]\|]+)\|)?([^\s\]]+)\]\]/,
-			wiki_processor_regexp => qr/\[\[(\w+)\s+([^\]]*)\]\]/,
-			wiki_file_regexp => qr/(^[-[:alnum:]_.:\/+]+$)/,
-			verbose => 0,
-			wikiname => "wiki",
-			default_pageext => ".mdwn",
-			cgi => 0,
-			rcs => 'svn',
-			notify => 0,
-			url => '',
-			cgiurl => '',
-			historyurl => '',
-			diffurl => '',
-			anonok => 0,
-			rss => 0,
-			sanitize => 1,
-			rebuild => 0,
-			refresh => 0,
-			getctime => 0,
-			hyperestraier => 0,
-			wrapper => undef,
-			wrappermode => undef,
-			svnrepo => undef,
-			svnpath => "trunk",
-			srcdir => undef,
-			destdir => undef,
-			templatedir => "/usr/share/ikiwiki/templates",
-			underlaydir => "/usr/share/ikiwiki/basewiki",
-			setup => undef,
-			adminuser => undef,
-			adminemail => undef,
-			plugin => [qw{inline}],
-		);
-
+		%config=defaultconfig();
 		eval q{use Getopt::Long};
+		Getopt::Long::Configure('pass_through');
 		GetOptions(
 			"setup|s=s" => \$config{setup},
 			"wikiname=s" => \$config{wikiname},
@@ -61,11 +27,11 @@ sub getconfig () { #{{{
 			"rcs=s" => \$config{rcs},
 			"no-rcs" => sub { $config{rcs}="" },
 			"anonok!" => \$config{anonok},
-			"hyperestraier" => \$config{hyperestraier},
 			"rss!" => \$config{rss},
 			"cgi!" => \$config{cgi},
+			"discussion!" => \$config{discussion},
+			"w3mmode!" => \$config{w3mmode},
 			"notify!" => \$config{notify},
-			"sanitize!" => \$config{sanitize},
 			"url=s" => \$config{url},
 			"cgiurl=s" => \$config{cgiurl},
 			"historyurl=s" => \$config{historyurl},
@@ -73,6 +39,7 @@ sub getconfig () { #{{{
 			"svnrepo" => \$config{svnrepo},
 			"svnpath" => \$config{svnpath},
 			"adminemail=s" => \$config{adminemail},
+			"timeformat=s" => \$config{timeformat},
 			"exclude=s@" => sub {
 				$config{wiki_file_prune_regexp}=qr/$config{wiki_file_prune_regexp}|$_[1]/;
 			},
@@ -90,10 +57,27 @@ sub getconfig () { #{{{
 			},
 			"plugin=s@" => sub {
 				push @{$config{plugin}}, $_[1];
+			},
+			"disable-plugin=s@" => sub {
+				$config{plugin}=[grep { $_ ne $_[1] } @{$config{plugin}}];
+			},
+			"pingurl" => sub {
+				push @{$config{pingurl}}, $_[1];
 			}
 		) || usage();
 
 		if (! $config{setup}) {
+			loadplugins();
+			if (exists $hooks{getopt}) {
+				foreach my $id (keys %{$hooks{getopt}}) {
+		                        $hooks{getopt}{$id}{call}->();
+				}
+			}
+			if (grep /^-/, @ARGV) {
+				print STDERR "Unknown option: $_\n"
+					foreach grep /^-/, @ARGV;
+				usage();
+			}
 			usage() unless @ARGV == 2;
 			$config{srcdir} = possibly_foolish_untaint(shift @ARGV);
 			$config{destdir} = possibly_foolish_untaint(shift @ARGV);
@@ -104,6 +88,10 @@ sub getconfig () { #{{{
 		# wrapper passes a full config structure in the environment
 		# variable
 		eval possibly_foolish_untaint($ENV{WRAPPED_OPTIONS});
+		if ($@) {
+			error("WRAPPED_OPTIONS: $@");
+		}
+		loadplugins();
 		checkconfig();
 	}
 } #}}}
@@ -131,7 +119,6 @@ sub main () { #{{{
 		loadindex();
 		require IkiWiki::Render;
 		rcs_update();
-		rcs_getctime() if $config{getctime};
 		refresh();
 		rcs_notify() if $config{notify};
 		saveindex();