class Guard::Puppetlint

Constants

VERSION

Public Class Methods

new(watchers = [], options = {}) click to toggle source
Calls superclass method
# File lib/guard/puppet-lint.rb, line 24
def initialize(watchers = [], options = {})
  options = { :syntax_check => true }.merge(options)
  @linter = PuppetLint.new
  super
end

Public Instance Methods

prepend_filename(msg, file) click to toggle source
# File lib/guard/puppet-lint.rb, line 40
def prepend_filename(msg, file)
  if msg
    msg.map {|x| "#{file}: #{x}"}
  else
    []
  end
end
run_all() click to toggle source

Call run_on_change for all files which match this guard.

# File lib/guard/puppet-lint.rb, line 36
def run_all
  run_on_change(Watcher.match_files(self, Dir.glob('{,**/}*{,.*}').uniq))
end
run_on_change(res) click to toggle source

Print the result of the command(s), if there are results to be printed.

# File lib/guard/puppet-lint.rb, line 49
def run_on_change(res)
  messages = []
  res.each do |file|
    file = File.join( options[:watchdir].to_s,file ) if options[:watchdir]

    if options[:syntax_check]
      parser_messages = `puppet parser validate #{file} --color=false`.split("\n")
      parser_messages.reject! { |s| s =~ /puppet help parser validate/ }
      parser_messages.map! { |s| s.gsub 'err: Could not parse for environment production:', '' }

      messages += prepend_filename(parser_messages, file)
    end

    @linter.file = file
    @linter.clear_messages
    @linter.run
    linter_msg = @linter.messages.reject { |s| !options[:show_warnings] && s =~ /WARNING/ }
    messages += prepend_filename(linter_msg, file)
  end
  if messages.empty?
    messages = ["Files are ok:"] + res
    image = :success
  else
    image = :failed
  end
  Notifier.notify( messages.join("\n"), :title => "Puppet lint", :image => image )
end
start() click to toggle source

Calls run_all if the :all_on_start option is present.

# File lib/guard/puppet-lint.rb, line 31
def start
  run_all if options[:all_on_start]
end