summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorDaniel Pittman <daniel@puppetlabs.com>2011-04-04 16:46:09 -0700
committerDaniel Pittman <daniel@puppetlabs.com>2011-04-12 16:12:07 -0700
commit1b4d7a51d10b217c7f67f3876242fff6dc694faa (patch)
tree5e21cfebd6478f29e1cffc817ce96b69e981418a /lib/puppet
parentd8dfb1f143ba3e602bec387508c8dad7aab00062 (diff)
downloadpuppet-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.rb7
-rw-r--r--lib/puppet/faces/help.rb52
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