diff options
author | Daniel Pittman <daniel@puppetlabs.com> | 2011-04-04 16:46:09 -0700 |
---|---|---|
committer | Daniel Pittman <daniel@puppetlabs.com> | 2011-04-12 16:12:07 -0700 |
commit | 1b4d7a51d10b217c7f67f3876242fff6dc694faa (patch) | |
tree | 5e21cfebd6478f29e1cffc817ce96b69e981418a /lib/puppet | |
parent | d8dfb1f143ba3e602bec387508c8dad7aab00062 (diff) | |
download | puppet-1b4d7a51d10b217c7f67f3876242fff6dc694faa.tar.gz puppet-1b4d7a51d10b217c7f67f3876242fff6dc694faa.tar.xz puppet-1b4d7a51d10b217c7f67f3876242fff6dc694faa.zip |
(#6962) Create the basic shape of the help face.
This implements the basic help face, along with the start of the support
structures; we include the basic application, and the default help action that
just emits a listing of faces and other discovered stuff...
Reviewed-By: Matt Robinson <matt@puppetlabs.com>
Diffstat (limited to 'lib/puppet')
-rw-r--r-- | lib/puppet/application/help.rb | 7 | ||||
-rw-r--r-- | lib/puppet/faces/help.rb | 52 |
2 files changed, 59 insertions, 0 deletions
diff --git a/lib/puppet/application/help.rb b/lib/puppet/application/help.rb new file mode 100644 index 000000000..69905af27 --- /dev/null +++ b/lib/puppet/application/help.rb @@ -0,0 +1,7 @@ +require 'puppet/application/faces_base' + +class Puppet::Application::Help < Puppet::Application::FacesBase + def render(result) + puts result.join("\n") + end +end diff --git a/lib/puppet/faces/help.rb b/lib/puppet/faces/help.rb new file mode 100644 index 000000000..e986d19b3 --- /dev/null +++ b/lib/puppet/faces/help.rb @@ -0,0 +1,52 @@ +require 'puppet/faces' + +Puppet::Faces.define(:help, '0.0.1') do + summary "Displays help about puppet subcommands" + + action(:help) do + option "--version VERSION" do + desc "Which version of the interface to show help for" + end + + when_invoked do |*args| + # Check our invocation, because we want varargs and can't do defaults + # yet. REVISIT: when we do option defaults, and positional options, we + # should rewrite this to use those. --daniel 2011-04-04 + options = args.pop + if options.nil? or args.length > 2 then + raise ArgumentError, "help only takes two (optional) arguments, a face name, and an action" + end + + if options[:version] and options[:version] !~ /^current$/i then + version = options[:version] + else + version = :current + end + + message = [] + if args.length == 0 then + message << "Use: puppet [options] <subcommand> <action>" + message << "" + message << "Available commands, from Puppet Faces:" + Puppet::Faces.faces.sort.each do |name| + face = Puppet::Faces[name, :current] + message << format(" %-15s %s", face.name, 'REVISIT: face.desc') + end + else + face = Puppet::Faces[args[0].to_sym, version] + if args[1] then + action = face.get_action args[1].to_sym + else + action = nil + end + + help = [] + face.actions.each do |action| + help << "Action: #{action}" + end + end + + message + end + end +end |