Class: PuppetLint::Bin
- Inherits:
-
Object
- Object
- PuppetLint::Bin
- Defined in:
- lib/puppet-lint/bin.rb
Overview
Internal: The logic of the puppet-lint bin script, contained in a class for ease of testing.
Instance Method Summary collapse
-
#initialize(args) ⇒ Bin
constructor
Public: Initialise a new PuppetLint::Bin.
-
#run ⇒ Object
Public: Run puppet-lint as a command line tool.
Constructor Details
#initialize(args) ⇒ Bin
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
14 15 16 |
# File 'lib/puppet-lint/bin.rb', line 14 def initialize(args) @args = args end |
Instance Method Details
#run ⇒ Object
Public: Run puppet-lint as a command line tool.
Returns an Integer exit code to be passed back to the shell.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# 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.}" 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 |