diff options
| author | Daniel Pittman <daniel@puppetlabs.com> | 2011-04-19 10:34:05 -0700 |
|---|---|---|
| committer | Daniel Pittman <daniel@puppetlabs.com> | 2011-04-19 10:34:05 -0700 |
| commit | a594563919a2342e1ea542f8f18ed187ab9ecad3 (patch) | |
| tree | 59bb906fd3206ac58289f58ff80b9d59fe60ab4b /lib | |
| parent | 9adcb194a75df4e0f0570c20bfa90686ed078265 (diff) | |
| parent | 4efba7148a79fcd099b4eb9bd17cbb2d785f5fb8 (diff) | |
| download | puppet-a594563919a2342e1ea542f8f18ed187ab9ecad3.tar.gz puppet-a594563919a2342e1ea542f8f18ed187ab9ecad3.tar.xz puppet-a594563919a2342e1ea542f8f18ed187ab9ecad3.zip | |
Merge branch 'bug/2.7.x/7132-a-summary-with-a-newline-is-accepted' into 2.7.x
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/puppet/interface.rb | 48 | ||||
| -rw-r--r-- | lib/puppet/interface/action.rb | 15 |
2 files changed, 40 insertions, 23 deletions
diff --git a/lib/puppet/interface.rb b/lib/puppet/interface.rb index 5e9355061..888e4ecad 100644 --- a/lib/puppet/interface.rb +++ b/lib/puppet/interface.rb @@ -68,12 +68,31 @@ class Puppet::Interface self.default_format = format.to_sym end - attr_accessor :summary + ######################################################################## + # Documentation. We currently have to rewrite both getters because we share + # the same instance between build-time and the runtime instance. When that + # splits out this should merge into a module that both the action and face + # include. --daniel 2011-04-17 + attr_accessor :summary, :description def summary(value = nil) - @summary = value unless value.nil? + self.summary = value unless value.nil? @summary end + def summary=(value) + value = value.to_s + value =~ /\n/ and + raise ArgumentError, "Face summary should be a single line; put the long text in 'description' instead." + + @summary = value + end + + def description(value = nil) + self.description = value unless value.nil? + @description + end + + ######################################################################## attr_reader :name, :version def initialize(name, version, &block) @@ -90,26 +109,11 @@ class Puppet::Interface # Try to find actions defined in other files. def load_actions - path = "puppet/face/#{name}" - - loaded = [] - [path, "#{name}@#{version}/#{path}"].each do |path| - Puppet::Interface.autoloader.search_directories.each do |dir| - fdir = ::File.join(dir, path) - next unless FileTest.directory?(fdir) - - Dir.chdir(fdir) do - Dir.glob("*.rb").each do |file| - aname = file.sub(/\.rb/, '') - if loaded.include?(aname) - Puppet.debug "Not loading duplicate action '#{aname}' for '#{name}' from '#{fdir}/#{file}'" - next - end - loaded << aname - Puppet.debug "Loading action '#{aname}' for '#{name}' from '#{fdir}/#{file}'" - require "#{Dir.pwd}/#{aname}" - end - end + Puppet::Interface.autoloader.search_directories.each do |dir| + Dir.glob(File.join(dir, "puppet/face/#{name}", "*.rb")).each do |file| + action = file.sub(dir, '').sub(/^[\\\/]/, '').sub(/\.rb/, '') + Puppet.debug "Loading action '#{action}' for '#{name}' from '#{dir}/#{action}.rb'" + require(action) end end end diff --git a/lib/puppet/interface/action.rb b/lib/puppet/interface/action.rb index 412e39449..f6273d1c2 100644 --- a/lib/puppet/interface/action.rb +++ b/lib/puppet/interface/action.rb @@ -24,8 +24,21 @@ class Puppet::Interface::Action attr_reader :name def to_s() "#{@face}##{@name}" end - attr_accessor :default, :summary + attr_accessor :default + ######################################################################## + # Documentation stuff, whee! + attr_accessor :summary, :description + def summary=(value) + value = value.to_s + value =~ /\n/ and + raise ArgumentError, "Face summary should be a single line; put the long text in 'description' instead." + + @summary = value + end + + + ######################################################################## # Initially, this was defined to allow the @action.invoke pattern, which is # a very natural way to invoke behaviour given our introspection # capabilities. Heck, our initial plan was to have the faces delegate to |
