Sha256: 88314af40230abd6c88344de1431f282331ed08137a766a42eca0f7e1f1986e9

Contents?: true

Size: 1.26 KB

Versions: 5

Compression:

Stored size: 1.26 KB

Contents

require 'optparse'
require 'json'

module PerfMonger
module Command

class PlayCommand < BaseCommand
  register_command 'play', "Play a perfmonger log file in JSON"

  def initialize
    @parser = OptionParser.new
    @parser.banner = <<EOS
Usage: perfmonger play [options] LOG_FILE

Options:
EOS

    @color = false
    @parser.on("-c", "--color", "Use colored JSON ouptut") do
      @color = true
    end

    @pretty = false
    @parser.on("-p", "--pretty", "Use human readable JSON ouptut") do
      @pretty = true
    end

  end

  def parse_args(argv)
    @parser.parse!(argv)

    if argv.size == 0
      puts("ERROR: PerfMonger log file is required")
      puts(@parser.help)
      exit(false)
    end

    @logfile = argv.shift
    if ! File.exists?(@logfile)
      puts("ERROR: No such file: #{@logfile}")
      puts(@parser.help)
      exit(false)
    end
  end

  def run(argv)
    parse_args(argv)

    @player_bin = ::PerfMonger::Command::CoreFinder.player()

    if ! @player_bin
      puts("[ERROR] no executable binary found.")
      exit(false)
    end

    cmd = [@player_bin]
    if @color
      cmd << "-color"
    end
    if @pretty
      cmd << "-pretty"
    end
    cmd << @logfile

    Process.exec(*cmd)
  end
end

end # module Command
end # module PerfMonger

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
perfmonger-0.12.1 lib/perfmonger/command/play.rb
perfmonger-0.12.0 lib/perfmonger/command/play.rb
perfmonger-0.11.2 lib/perfmonger/command/play.rb
perfmonger-0.11.1 lib/perfmonger/command/play.rb
perfmonger-0.11.0 lib/perfmonger/command/play.rb