X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/823ec815d4fc9625d6fa3553ad03e9f2ff737659..e6197667a014d54a8703558113fb5d7f43463e6d:/ikiwiki.in diff --git a/ikiwiki.in b/ikiwiki.in index da5555629..30df628b2 100755 --- a/ikiwiki.in +++ b/ikiwiki.in @@ -1,17 +1,27 @@ #!/usr/bin/perl -$ENV{PATH}="/usr/local/bin:/usr/bin:/bin"; -delete @ENV{qw{IFS CDPATH ENV BASH_ENV}}; - package IkiWiki; +no lib '.'; use warnings; use strict; -use lib '.'; # For use in nonstandard directory, munged by Makefile. -use IkiWiki; +use FindBin; use lib $FindBin::Bin; # For use in nonstandard directory, munged by Makefile. +use IkiWiki 3.00; sub usage () { die gettext("usage: ikiwiki [options] source dest"), "\n", - gettext(" ikiwiki --setup configfile"), "\n"; + gettext(" ikiwiki --setup my.setup [options]"), "\n"; +} + +sub setup (@) { + require IkiWiki::Setup; + my $verbose=$config{verbose}; + my $syslog=$config{syslog}; + IkiWiki::Setup::load($_[1]); + $config{setupverbose}=$config{verbose}; + $config{setupsyslog}=$config{syslog}; + $config{verbose}=$verbose || $config{setupverbose}; + $config{syslog}=$syslog; + $config{setup}=1; } sub getconfig () { @@ -20,18 +30,14 @@ sub getconfig () { eval q{use Getopt::Long}; Getopt::Long::Configure('pass_through'); GetOptions( - "setup|s=s" => sub { - require IkiWiki::Setup; - my $verbose=$config{verbose}; - my $syslog=$config{syslog}; - IkiWiki::Setup::load($_[1]); - $config{setupverbose}=$config{verbose}; - $config{setupsyslog}=$config{syslog}; - $config{verbose}=$verbose || $config{setupverbose}; - $config{syslog}=$syslog; - $config{setup}=1; - }, + "setup|s=s" => \&setup, "dumpsetup|s=s" => \$config{dumpsetup}, + "changesetup|s=s" => sub { + $config{changesetup}=$_[1]; + $config{genwrappers}=1; + $config{refresh}=1; + setup(@_); + }, "wikiname=s" => \$config{wikiname}, "verbose|v!" => \$config{verbose}, "syslog!" => \$config{syslog}, @@ -44,7 +50,8 @@ sub getconfig () { "wrappergroup=s" => \$config{wrappergroup}, "usedirs!" => \$config{usedirs}, "prefix-directives!" => \$config{prefix_directives}, - "getctime" => \$config{getctime}, + "getctime" => \$config{gettime}, + "gettime!" => \$config{gettime}, "numbacklinks=i" => \$config{numbacklinks}, "rcs=s" => \$config{rcs}, "no-rcs" => sub { $config{rcs}="" }, @@ -84,7 +91,8 @@ sub getconfig () { $config{wrappermode}=possibly_foolish_untaint($_[1]) }, "plugin=s@" => sub { - push @{$config{add_plugins}}, $_[1]; + push @{$config{add_plugins}}, $_[1] + unless grep { $_ eq $_[1] } @{$config{add_plugins}}; }, "disable-plugin=s@" => sub { push @{$config{disable_plugins}}, $_[1]; @@ -96,6 +104,15 @@ sub getconfig () { } $config{$var}=$val; }, + "set-yaml=s" => sub { + my ($var, $val)=split('=', $_[1], 2); + if (! defined $var || ! defined $val) { + die gettext("usage: --set-yaml var=value"), "\n"; + } + eval q{use YAML::XS; use Encode}; + die $@ if $@; + $config{$var}=Load(encode_utf8($val)."\n"); + }, "version" => sub { print "ikiwiki version $IkiWiki::version\n"; exit; @@ -142,24 +159,8 @@ sub main () { ! $config{clean} && ((! $config{refresh} && ! $config{post_commit}) || $config{genwrappers})) { - debug(gettext("generating wrappers..")); require IkiWiki::Wrapper; - my %origconfig=(%config); - foreach my $wrapper (@{$config{wrappers}}) { - %config=(%origconfig, %{$wrapper}); - $config{verbose}=$config{setupverbose} - if exists $config{setupverbose}; - $config{syslog}=$config{setupsyslog} - if exists $config{setupsyslog}; - delete @config{qw(setupsyslog setupverbose wrappers genwrappers rebuild)}; - checkconfig(); - if (! $config{cgi} && ! $config{post_commit} && - ! $config{test_receive}) { - $config{post_commit}=1; - } - gen_wrapper(); - } - %config=(%origconfig); + gen_wrappers(); } # setup implies a wiki rebuild by default @@ -169,10 +170,16 @@ sub main () { } } + if ($config{changesetup}) { + require IkiWiki::Setup; + IkiWiki::Setup::dump($config{changesetup}); + } + if ($config{dumpsetup}) { $config{srcdir}="" if ! defined $config{srcdir}; $config{destdir}="" if ! defined $config{destdir}; $config{syslog}=1 if $config{setupsyslog}; + checkconfig(); require IkiWiki::Setup; IkiWiki::Setup::dump($config{dumpsetup}); }