class Logeater::CLI

Public Instance Methods

import(app, *files) click to toggle source
# File lib/logeater/cli.rb, line 40
def import(app, *files)
  unless options[:force]
    started_at = Time.now
    imported_files = Logeater::Request.where(app: app).pluck("DISTINCT logfile")
    finished_at = Time.now

    $stderr.puts " > \e[34mListed imported logfiles for \e[1m#{app}\e[0;34m in \e[1m%.2f\e[0;34m seconds\e[0m\n" % [
      finished_at - started_at ]

    files_count = files.count
    files.reject! { |file| imported_files.member? File.basename(file) }

    $stderr.puts "   \e[34;1m#{files_count}\e[0;34m files passed, \e[1m#{files_count - files.length}\e[0;34m removed as already imported.\e[0m\n\n"
  end

  if files.empty?
    $stderr.puts "No files to import"
    return
  end

  started_all = Time.now
  files.each_with_index do |file, i|
    $stderr.puts " > \e[34mImporting \e[1m#{File.basename(file)}\e[0;34m (%d of %d)\e[0m\n" % [
      i + 1,
      files.length ]

    reader = Logeater::Reader.new(app, file, options.slice(:progress, :verbose))

    started_at = Time.now
    count = reader.remove_existing_entries!
    finished_at = Time.now

    $stderr.puts "   \e[34mDeleted \e[1m%d\e[0;34m requests for #{reader.filename} in \e[1m%.2f\e[0;34m seconds\e[0m\n" % [
      count,
      finished_at - started_at ]

    started_at = Time.now
    count = reader.import
    finished_at = Time.now

    $stderr.puts "   \e[34mImported \e[1m%d\e[0;34m requests in \e[1m%.2f\e[0;34m seconds\e[0m\n\n" % [
      count,
      finished_at - started_at ]
  end

  finished_all = Time.now
  seconds = finished_all - started_all
  minutes = (seconds / 60).to_i
  seconds -= (minutes * 60)
  $stderr.puts "Total time %d minutes, %.2f seconds" % [minutes, seconds]
end
parse(app, *files) click to toggle source
# File lib/logeater/cli.rb, line 8
def parse(app, *files)
  if files.empty?
    $stderr.puts "No files to parse"
    return
  end

  started_all = Time.now
  files.each_with_index do |file, i|
    reader = Logeater::Reader.new(app, file, progress: true)

    started_at = Time.now
    requests = reader.parse
    finished_at = Time.now

    $stderr.puts " > \e[34mParsed \e[1m%d\e[0;34m requests in \e[1m%.2f\e[0;34m seconds (%d of %d)\e[0m\n\n" % [
      requests,
      finished_at - started_at,
      i + 1,
      files.length ]
  end

  finished_all = Time.now
  seconds = finished_all - started_all
  minutes = (seconds / 60).to_i
  seconds -= (minutes * 60)
  $stderr.puts "Total time %d minutes, %.2f seconds" % [minutes, seconds]
end