class Travis::CLI::Logs

def check_websocket

def check_websocket
  require 'websocket-native' if stream?
rescue LoadError => e
  raise e if e.respond_to?(:path) and e.path != 'websocket-native'
  info "speed up log streaming by installing the websocket-native gem"
end

def delete_log(job)

def delete_log(job)
  unless force?
    error "not deleting logs without --force" unless interactive?
    error "aborted" unless danger_zone? "Do you really want to delete the build log for #{color(job.inspect_info, :underline)}?"
  end
  warn "deleting log for #{color(job.inspect_info, [:bold, :info])}"
  job.delete_log(reason || {})
end

def display_log(job)

def display_log(job)
  info "displaying logs for #{color(job.inspect_info, [:bold, :info])}"
  return print_log(job.log.body) unless stream?
  job.log.body { |part| print_log(part) }
ensure
  print "\e[0m" if interactive?
end

def job(number)

def job(number)
  number = last_build.number + number if number.start_with? '.'
  job    = super(number) || build(number) || branch(number)
  job    = job.jobs.first if job.respond_to? :jobs
  job
end

def print_log(part)

def print_log(part)
  print interactive? ? encoded(part) : clean(part)
end

def run(number = last_build.number)

def run(number = last_build.number)
  self.stream = true if stream.nil?
  job ||= job(number) || error("no such job ##{number}")
  delete ? delete_log(job) : display_log(job)
end

def setup

def setup
  super
  check_websocket
end