class PuppetLint::Bin
Internal: The logic of the puppet-lint bin script, contained in a class for ease of testing.
Public Class Methods
new(args)
click to toggle source
Public: Initialise a new PuppetLint::Bin
.
args - An Array of command line argument Strings to be passed to the option
parser.
Examples
PuppetLint::Bin.new(ARGV).run
# File lib/puppet-lint/bin.rb, line 14 def initialize(args) @args = args end
Public Instance Methods
run()
click to toggle source
Public: Run puppet-lint as a command line tool.
Returns an Integer exit code to be passed back to the shell.
# File lib/puppet-lint/bin.rb, line 21 def run begin opts = PuppetLint::OptParser.build(@args) opts.parse!(@args) rescue OptionParser::InvalidOption => e puts "puppet-lint: #{e.message}" puts "puppet-lint: try 'puppet-lint --help' for more information" return 1 end if PuppetLint.configuration.display_version puts "puppet-lint #{PuppetLint::VERSION}" return 0 end if PuppetLint.configuration.list_checks puts PuppetLint.configuration.checks return 0 end if @args[0].nil? puts 'puppet-lint: no file specified' puts "puppet-lint: try 'puppet-lint --help' for more information" return 1 end begin path = @args[0] path = path.gsub(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR path = if File.directory?(path) Dir.glob("#{path}/**/*.pp") else @args end PuppetLint.configuration.with_filename = true if path.length > 1 return_val = 0 ignore_paths = PuppetLint.configuration.ignore_paths puts '[' if PuppetLint.configuration.json path.each do |f| next if ignore_paths.any? { |p| File.fnmatch(p, f) } l = PuppetLint.new l.file = f l.run l.print_problems puts ',' if f != path.last && PuppetLint.configuration.json if l.errors? || (l.warnings? && PuppetLint.configuration.fail_on_warnings) return_val = 1 end next unless PuppetLint.configuration.fix && l.problems.none? { |r| r[:check] == :syntax } File.open(f, 'wb') do |fd| fd.write(l.manifest) end end puts ']' if PuppetLint.configuration.json return return_val rescue PuppetLint::NoCodeError puts 'puppet-lint: no file specified or specified file does not exist' puts "puppet-lint: try 'puppet-lint --help' for more information" return 1 end end