puppet-strings/lib/puppet/face/strings.rb

65 lines
2.0 KiB
Ruby

require 'puppet/face'
require 'puppet_x/puppetlabs/strings/yard/tags/directives'
Puppet::Face.define(:strings, '0.0.1') do
summary "Generate Puppet documentation with YARD."
# Ensures that the user has the needed features to use puppet strings
def check_required_features
unless Puppet.features.yard?
raise RuntimeError, "The 'yard' gem must be installed in order to use this face."
end
unless Puppet.features.rgen?
raise RuntimeError, "The 'rgen' gem must be installed in order to use this face."
end
if RUBY_VERSION.match(/^1\.8/)
raise RuntimeError, "This face requires Ruby 1.9 or greater."
end
end
action(:yardoc) do
default
option "--emit-json-stdout" do
summary "Print json representation of the documentation to stdout"
end
option "--emit-json FILE" do
summary "Write json representation of the documentation to FILE"
end
summary "Generate YARD documentation from files."
arguments "[manifest_file.pp ...]"
when_invoked do |*args|
check_required_features
require 'puppet_x/puppetlabs/strings/util'
PuppetX::PuppetLabs::Strings::Util.generate(args)
# Puppet prints the return value of the action. The return value of this
# action is that of the yardoc_actions invocation, which is the boolean
# "true". This clutters the statistics yard prints, so instead return the
# empty string. Note an extra newline will also be printed.
""
end
end
# NOTE: Modeled after the `yard gems` command which builds doc indicies
# (.yardoc directories) for Ruby Gems. Currently lacks the fine-grained
# control over where these indicies are created and just dumps them in the
# module roots.
action(:server) do
summary "Serve YARD documentation for modules."
when_invoked do |*args|
check_required_features
require 'puppet_x/puppetlabs/strings/util'
PuppetX::PuppetLabs::Strings::Util.serve(args)
end
end
end