class Travis::CLI::Lint

def run(file = nil)

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