Sha256: 54452cedec5be0898b2c7b2f909df3b57d3765c744f9eca3496256b70a9289cc

Contents?: true

Size: 1.99 KB

Versions: 10

Compression:

Stored size: 1.99 KB

Contents

require 'puppet/face'
require 'puppet/parser'

Puppet::Face.define(:parser, '0.0.1') do
  copyright "Puppet Labs", 2011
  license   "Apache 2 license; see COPYING"

  summary "Interact directly with the parser."

  action :validate do
    summary "Validate the syntax of one or more Puppet manifests."
    arguments "[<manifest>] [<manifest> ...]"
    returns "Nothing, or the first syntax error encountered."
    description <<-'EOT'
      This action validates Puppet DSL syntax without compiling a catalog or
      syncing any resources. If no manifest files are provided, it will
      validate the default site manifest.
    EOT
    examples <<-'EOT'
      Validate the default site manifest at /etc/puppet/manifests/site.pp:

      $ puppet parser validate

      Validate two arbitrary manifest files:

      $ puppet parser validate init.pp vhost.pp

      Validate from STDIN:

      $ cat init.pp | puppet parser validate
    EOT
    when_invoked do |*args|
      args.pop
      files = args
      if files.empty?
        if not STDIN.tty?
          Puppet[:code] = STDIN.read
          validate_manifest
        else
           files << Puppet[:manifest]
           Puppet.notice "No manifest specified. Validating the default manifest #{Puppet[:manifest]}"
        end
      end
      missing_files = []
      files.each do |file|
        missing_files << file if ! Puppet::FileSystem.exist?(file)
        validate_manifest(file)
      end
      raise Puppet::Error, "One or more file(s) specified did not exist:\n#{missing_files.collect {|f| " " * 3 + f + "\n"}}" if ! missing_files.empty?
      nil
    end
  end

  # @api private
  def validate_manifest(manifest = nil)
    configured_environment = Puppet.lookup(:environments).get(Puppet[:environment])
    validation_environment = manifest ?
      configured_environment.override_with(:manifest => manifest) :
      configured_environment

    validation_environment.known_resource_types.clear

  rescue => detail
    Puppet.log_exception(detail)
    exit(1)
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
puppet-3.5.1 lib/puppet/face/parser.rb
puppet-3.5.1-x86-mingw32 lib/puppet/face/parser.rb
puppet-3.5.1.rc1 lib/puppet/face/parser.rb
puppet-3.5.1.rc1-x86-mingw32 lib/puppet/face/parser.rb
puppet-3.5.0.rc3 lib/puppet/face/parser.rb
puppet-3.5.0.rc3-x86-mingw32 lib/puppet/face/parser.rb
puppet-3.5.0.rc2 lib/puppet/face/parser.rb
puppet-3.5.0.rc2-x86-mingw32 lib/puppet/face/parser.rb
puppet-3.5.0.rc1 lib/puppet/face/parser.rb
puppet-3.5.0.rc1-x86-mingw32 lib/puppet/face/parser.rb