diff options
| author | Daniel Pittman <daniel@puppetlabs.com> | 2011-04-04 11:04:17 -0700 |
|---|---|---|
| committer | Daniel Pittman <daniel@puppetlabs.com> | 2011-04-04 13:32:04 -0700 |
| commit | 5a0b547f3289cb8e13b197d021322e03d05bee8e (patch) | |
| tree | d73d52ff19d327025d993ec88922d857dd5c22e5 /lib/puppet/string | |
| parent | 8b37d7038c89bd830b076e838686419ff0068b56 (diff) | |
| download | puppet-5a0b547f3289cb8e13b197d021322e03d05bee8e.tar.gz puppet-5a0b547f3289cb8e13b197d021322e03d05bee8e.tar.xz puppet-5a0b547f3289cb8e13b197d021322e03d05bee8e.zip | |
(#6749) Fix optional vs mandatory argument handling.
optparse will treat '--foo --bar' as "foo with the argument --bar" when foo
takes a mandatory argument. We need to emulate that behaviour in our
pre-parse of the command line.
Incidentally, fix up a bug in boolean options, and improve our testing.
Reviewed-By: Nick Lewis <nick@puppetlabs.com>
Diffstat (limited to 'lib/puppet/string')
| -rw-r--r-- | lib/puppet/string/option.rb | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/puppet/string/option.rb b/lib/puppet/string/option.rb index e7b6f187c..f499e4b95 100644 --- a/lib/puppet/string/option.rb +++ b/lib/puppet/string/option.rb @@ -63,7 +63,8 @@ class Puppet::String::Option end # to_s and optparse_to_name are roughly mirrored, because they are used to - # transform strings to name symbols, and vice-versa. + # transform strings to name symbols, and vice-versa. This isn't a full + # bidirectional transformation though. def to_s @name.to_s.tr('_', '-') end @@ -72,7 +73,7 @@ class Puppet::String::Option unless found = declaration.match(/^-+([^= ]+)/) or found.length != 1 then raise ArgumentError, "Can't find a name in the declaration #{declaration.inspect}" end - name = found.captures.first.tr('-', '_') + name = found.captures.first.sub('[no-]', '').tr('-', '_') raise "#{name.inspect} is an invalid option name" unless name.to_s =~ /^[a-z]\w*$/ name.to_sym end |
