Add --set-yaml switch for setting more complex config file options.
authorJoey Hess <joey@gnu.kitenet.net>
Wed, 24 Mar 2010 18:39:50 +0000 (14:39 -0400)
committerJoey Hess <joey@gnu.kitenet.net>
Wed, 24 Mar 2010 18:39:50 +0000 (14:39 -0400)
debian/changelog
doc/usage.mdwn
ikiwiki.in

index 4d0639a5815beeae5bad092c2f4e1ea410405e94..e7499b6f2bd139920d33c78e746f0d657656168a 100644 (file)
@@ -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
 
index f735170f0e114e734af51e8180349fbaded37b84..db1e36a10b109077ac5e1f55ffd6ce0ce001f1d4 100644 (file)
@@ -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
 
index da5555629bbfd6bd1ff378752c2952d978c5feb3..7028bdb7d99d098175ed772060946bfc24023a4c 100755 (executable)
@@ -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;