This gem can parse values, documentation, types, groups and conditions of parameters from your puppet modules. Only thing you have to do is provide a path to manifest file you want to be parsed.
The library is used in Kafo, which can be used to get an idea of what's possible to build on top of this library.
Currently puppet classes and types (definitions) are supported.
Add this line to your application's Gemfile:
gem 'kafo_parsers'
And then execute:
$ bundle
Or install it yourself as:
$ gem install kafo_parsers
To parse file using the best available parser, and see parsed information:
require 'kafo_parsers/parsers'
parser = KafoParsers::Parsers.find_available or fail('No parser available')
hash = parser.parse('/puppet/module/manifests/init.pp')
p hash
find_available
can take a logger object that responds to #debug
to log
detailed reasons why each parser isn't available.
logger = Logging.logger(STDOUT)
logger.level = :debug
KafoParsers::Parsers.find_available(:logger => logger)
To load a specific parser:
require 'kafo_parsers/puppet_strings_module_parser'
hash = KafoParsers::PuppetStringsModuleParser.parse('/puppet/module/manifests/init.pp')
Leverage puppet-strings to parse puppet manifests. This requires puppet-strings 1.2.0 or higher and may be installed either as a gem in the same environment, or in a Puppet AIO installation.
require 'kafo_parsers/puppet_strings_module_parser'
hash = KafoParsers::PuppetStringsModuleParser.parse('/puppet/module/manifests/init.pp')
Classes and defined types should be prefixed with a comment section with an RDoc block, containing a description, headings for different parameter groups and parameters laid out as shown below:
# Example class that installs Example
#
# Supports version 1 to 3.
#
# === Parameters::
#
# $foo:: Sets the value of foo in the Example config
#
# === Advanced parameters::
#
# $bar:: Sets the value of bar in the advanced config
Parameters may have multi-line descriptions and can have extra attributes defined on new lines below them. Supports:
# $foo:: Sets the value of foo in the Example config
# condition: $bar == 'use_foo'
# type: Optional[String]
Supports:
condition:
an expression to determine if the parameter is usedtype:
the data type of the parameter
Used by:
PuppetStringsModuleParser
(but deprecated, prefer YARD)
Classes and defined types should be prefixed with a comment section in YARD following the Puppet Strings documentation standard, as shown below:
# Example class that installs Example
#
# Supports version 1 to 3.
#
# @param foo Sets the value of foo in the Example config
# @param bar Sets the value of bar in the advanced config
# group: Advanced parameters
Parameters may have multi-line descriptions and can have extra attributes defined on new lines below them. Supports:
# @param foo Sets the value of foo in the Example config
# condition: $bar == 'use_foo'
Supports:
condition:
an expression to determine if the parameter is usedgroup:
comma-separated list of groups, increasing in specificity
Data types are given in the parameter list of the class, or can be given inline for Puppet 3 compatibility:
# @param foo [Integer] Sets the value of foo in the Example config
Used by:
PuppetStringsModuleParser
This project is licensed under the GPLv3+.