diff options
author | Jacob Helwig <jacob@puppetlabs.com> | 2011-07-21 16:50:02 -0700 |
---|---|---|
committer | Jacob Helwig <jacob@puppetlabs.com> | 2011-07-21 16:50:02 -0700 |
commit | 9c78759af57967d64eceeeb704a6673b81a76f30 (patch) | |
tree | 62474dc08399a36996b414dfa6c829978cc47a90 /lib/puppet/interface/action_manager.rb | |
parent | ba6230b6039d62b0713c9d5e3ff61a68f70ef723 (diff) | |
parent | 5e2a3d200b74eef9549e3e2a5bdbe2a23ae7fac1 (diff) | |
download | puppet-9c78759af57967d64eceeeb704a6673b81a76f30.tar.gz puppet-9c78759af57967d64eceeeb704a6673b81a76f30.tar.xz puppet-9c78759af57967d64eceeeb704a6673b81a76f30.zip |
Merge branch '2.7.x'
* 2.7.x:
(#7123) Make `find` the default action...
(#7123) Support runtime setting of 'default' on actions.
(#6787) Add `default_to` for options.
(#6857) Password disclosure when changing a user's password
Diffstat (limited to 'lib/puppet/interface/action_manager.rb')
-rw-r--r-- | lib/puppet/interface/action_manager.rb | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/puppet/interface/action_manager.rb b/lib/puppet/interface/action_manager.rb index fbf588d7d..5c9af4f96 100644 --- a/lib/puppet/interface/action_manager.rb +++ b/lib/puppet/interface/action_manager.rb @@ -7,13 +7,14 @@ module Puppet::Interface::ActionManager require 'puppet/interface/action_builder' @actions ||= {} - @default_action ||= nil raise "Action #{name} already defined for #{self}" if action?(name) + action = Puppet::Interface::ActionBuilder.build(self, name, &block) - if action.default - raise "Actions #{@default_action.name} and #{name} cannot both be default" if @default_action - @default_action = action + + if action.default and current = get_default_action + raise "Actions #{current.name} and #{name} cannot both be default" end + @actions[action.name] = action end @@ -61,7 +62,11 @@ module Puppet::Interface::ActionManager end def get_default_action - @default_action + default = actions.map {|x| get_action(x) }.select {|x| x.default } + if default.length > 1 + raise "The actions #{default.map(&:name).join(", ")} cannot all be default" + end + default.first end def action?(name) |