diff options
| author | Daniel Pittman <daniel@puppetlabs.com> | 2011-04-29 13:29:17 -0700 |
|---|---|---|
| committer | Daniel Pittman <daniel@puppetlabs.com> | 2011-04-29 13:29:17 -0700 |
| commit | 97ae812f0a67ef01daed4e9220981e2bc7c70603 (patch) | |
| tree | 1502f21bff17b7ef823e821ce2f5a35804c6757a /lib/puppet/interface | |
| parent | 1707f2779e37f231191cf5234e4e309055717374 (diff) | |
| download | puppet-97ae812f0a67ef01daed4e9220981e2bc7c70603.tar.gz puppet-97ae812f0a67ef01daed4e9220981e2bc7c70603.tar.xz puppet-97ae812f0a67ef01daed4e9220981e2bc7c70603.zip | |
(#7248) Fail if two aliases of one option are passed...
From the command line, and other facades, it is fairly difficult to call an
action with two aliases of the same option in the invocation, but from the
Ruby API it would be relatively easy to achieve.
This is now checked, and raises an error, so that we don't accidentally have
strange or unusual behaviour coming out of the whole system.
Reviewed-By: Pieter van de Bruggen <pieter@puppetlabs.com>
Diffstat (limited to 'lib/puppet/interface')
| -rw-r--r-- | lib/puppet/interface/action.rb | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/puppet/interface/action.rb b/lib/puppet/interface/action.rb index 9c9741b52..b842c2831 100644 --- a/lib/puppet/interface/action.rb +++ b/lib/puppet/interface/action.rb @@ -255,6 +255,20 @@ WRAPPER end def validate_args(args) + # Check for multiple aliases for the same option... + args.last.keys.each do |name| + # #7290: If this isn't actually an option, ignore it for now. We should + # probably fail, but that wasn't our API, and I don't want to perturb + # behaviour this late in the RC cycle. --daniel 2011-04-29 + if option = get_option(name) then + overlap = (option.aliases & args.last.keys) + unless overlap.length == 1 then + raise ArgumentError, "Multiple aliases for the same option passed: #{overlap.join(', ')}" + end + end + end + + # Check for missing mandatory options. required = options.map do |name| get_option(name) end.select(&:required?).collect(&:name) - args.last.keys |
