module Dopi::CommandParser::Output
Public Instance Methods
check_output(raw_output)
click to toggle source
# File lib/dopi/command_parser/output.rb, line 25 def check_output(raw_output) if error_patterns.empty? && warning_patterns.empty? log(:debug, "No patterns defined to parse the output") return true end output_ok = true error_patterns.each do |pattern| lines_with_matches(raw_output, pattern).each do |line_with_error| log(:error, line_with_error) output_ok = false end end warning_patterns.each do |pattern| lines_with_matches(raw_output, pattern).each do |line_with_warning| if fail_on_warning log(:error, line_with_warning) output_ok = false else log(:warn, line_with_warning) end end end output_ok end
error_patterns()
click to toggle source
# File lib/dopi/command_parser/output.rb, line 62 def error_patterns @error_patterns ||= parser_patterns_valid?(parse_output[:error]) ? [ parse_output[:error] ].flatten : [] end
fail_on_warning()
click to toggle source
# File lib/dopi/command_parser/output.rb, line 72 def fail_on_warning @fail_on_warning ||= fail_on_warning_valid? ? hash[:fail_on_warning] : false end
lines_with_matches(raw_output, pattern)
click to toggle source
# File lib/dopi/command_parser/output.rb, line 77 def lines_with_matches(raw_output, pattern) regexp = Regexp.new(pattern) raw_output.lines.find_all{ |line| line.scan(regexp).any? } end
parse_output()
click to toggle source
# File lib/dopi/command_parser/output.rb, line 54 def parse_output if parse_output_valid? Hash[hash[:parse_output].map{|k,v| [k.to_sym, v]}] else respond_to?(:parse_output_defaults) ? parse_output_defaults : {} end end
validate_output()
click to toggle source
# File lib/dopi/command_parser/output.rb, line 16 def validate_output log_validation_method('parse_output_valid?', CommandParsingError) unless parse_output.empty? log_validation_method('error_patterns_valid?', CommandParsingError) log_validation_method('warning_patterns_valid?', CommandParsingError) end log_validation_method('fail_on_warning_valid?', CommandParsingError) end
warning_patterns()
click to toggle source
# File lib/dopi/command_parser/output.rb, line 67 def warning_patterns @warning_patterns ||= parser_patterns_valid?(parse_output[:warning]) ? [ parse_output[:warning] ].flatten : [] end
Private Instance Methods
error_patterns_valid?()
click to toggle source
# File lib/dopi/command_parser/output.rb, line 92 def error_patterns_valid? parser_patterns_valid?(parse_output[:error]) end
fail_on_warning_valid?()
click to toggle source
# File lib/dopi/command_parser/output.rb, line 114 def fail_on_warning_valid? return false unless hash.kind_of?(Hash) return false if hash[:fail_on_warning].nil? # is optional hash[:fail_on_warning].kind_of?(TrueClass) or hash[:fail_on_warning].kind_of?(FalseClass) or raise CommandParsingError, "The value for 'fail_on_warning' must be boolean" true end
parse_output_valid?()
click to toggle source
# File lib/dopi/command_parser/output.rb, line 84 def parse_output_valid? return false unless hash.kind_of?(Hash) return false if hash[:parse_output].nil? # optional hash[:parse_output].kind_of?(Hash) or raise CommandParsingError, "The value for 'parse_output' has to be a Hash" true end
parser_patterns_valid?(pattern)
click to toggle source
# File lib/dopi/command_parser/output.rb, line 100 def parser_patterns_valid?(pattern) return false if pattern.nil? # optional pattern.kind_of?(Array) or raise CommandParsingError, "The value of 'error' and 'warning' in 'parse_output' has to be an Array" pattern.each do |entry| begin Regexp.new(entry) rescue raise CommandParsingError, "The pattern #{entry} in 'parse_output' is not a valid regular expression" end end true end
warning_patterns_valid?()
click to toggle source
# File lib/dopi/command_parser/output.rb, line 96 def warning_patterns_valid? parser_patterns_valid?(parse_output[:warning]) end