summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog1
-rw-r--r--doc/usage.mdwn10
-rwxr-xr-xikiwiki.in9
3 files changed, 17 insertions, 3 deletions
diff --git a/debian/changelog b/debian/changelog
index 4d0639a58..e7499b6f2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -14,6 +14,7 @@ ikiwiki (3.20100320) UNRELEASED; urgency=low
(Thanks to Aaron Wilson for the original patch.)
* Allow wrappers to be built using tcc.
* Add support for setup files written in YAML.
+ * Add --set-yaml switch for setting more complex config file options.
-- Joey Hess <joeyh@debian.org> Sat, 13 Mar 2010 14:48:10 -0500
diff --git a/doc/usage.mdwn b/doc/usage.mdwn
index f735170f0..db1e36a10 100644
--- a/doc/usage.mdwn
+++ b/doc/usage.mdwn
@@ -331,9 +331,13 @@ also be configured using a setup file.
* --set var=value
This allows setting an arbitrary configuration variable, the same as if it
- were set via a setup file. Since most options can be configured
- using command-line switches, you will rarely need to use this, but it can be
- useful for the odd option that lacks a command-line switch.
+ were set via a setup file. Since most options commonly used options can be
+ configured using command-line switches, you will rarely need to use this.
+
+* --set-yaml var=value
+
+ This is like --set, but it allows setting configuration variables that
+ use complex data structures, by passing in a YAML document.
# EXAMPLES
diff --git a/ikiwiki.in b/ikiwiki.in
index da5555629..7028bdb7d 100755
--- a/ikiwiki.in
+++ b/ikiwiki.in
@@ -96,6 +96,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::Any};
+ die $@ if $@;
+ $config{$var}=Load($val);
+ },
"version" => sub {
print "ikiwiki version $IkiWiki::version\n";
exit;