def run(file = nil)
file ||= '.travis.yml' if $stdin.tty? or $stdin.eof?
if file and file != '-'
debug "reading #{file}"
error "file does not exist: #{color(file, :bold)}" unless File.exist? file
error "cannot read #{color(file, :bold)}" unless File.readable? file
content = File.read(file)
else
debug "reading stdin"
file = 'STDIN'
content = $stdin.read
end
lint = session.lint(content)
unless quiet?
if lint.ok?
say "valid", color("Hooray, #{file} looks %s :)", :success)
else
say "Warnings for #{color(file, :info)}:"
lint.warnings.each do |warning|
say color('[x]', [:red, :bold]) + " "
if warning.key.any?
say [
color('in ', :info),
color(warning.key.join('.'), [:info, :bold, :underline]),
color(' section:', :info), ' '
].join
end
say warning.message.gsub(/"(.*?)"/) { color($1, [:info, :important]) }
end
end
end
exit 1 if lint.warnings? and exit_code?
end