* --setup setupfile
- In setup mode, ikiwiki reads the config file, which is really a perl
- program that can call ikiwiki internal functions.
-
The default action when --setup is specified is to automatically generate
wrappers for a wiki based on data in a setup file, and rebuild the wiki.
If you only want to build any changed pages, you can use --refresh with
--setup.
+* --changesetup setupfile
+
+ Reads the setup file, adds any configuration changes specified by other
+ options, and writes the new configuration back to the setup file. Also
+ updates any configured wrappers. In this mode, the wiki is not fully
+ rebuilt, unless you also add --rebuild.
+
+ Example, to enable some plugins:
+
+ ikiwiki --changesetup ~/ikiwiki.setup --plugin goodstuff --plugin calendar
+
* --dumpsetup setupfile
Causes ikiwiki to write to the specified setup file, dumping out
gettext(" ikiwiki --setup configfile"), "\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 () {
if (! exists $ENV{WRAPPED_OPTIONS}) {
%config=defaultconfig();
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},
$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];
}
}
+ 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};