#! /usr/bin/env ruby

# frozen_string_literal: true

LKP_SRC = ENV['LKP_SRC'] || File.dirname(File.dirname(File.realpath($PROGRAM_NAME)))

require 'optparse'
require "#{LKP_SRC}/lib/cci"

show_type = nil
field_list = []
where_list = []

options = OptionParser.new do |opts|
  opts.banner = 'Usage: cci jobs -f $field $where'
  opts.separator '    query your jobs from es db'
  opts.separator '    eg.0: cci jobs'
  opts.separator '    eg.2: cci jobs -f \* id=xxx'
  opts.separator '    eg.3: cci jobs -f id,job_stage,testbox suite=borrow'
  opts.separator '    eg.4: cci jobs -f id suite=borrow job_stage=finish'
  opts.separator '    eg.5: cci jobs -f -id'
  opts.separator '    eg.4: cci jobs -f +queue -id'
  opts.separator 'options:'

  opts.on('-f', '--field <field>', 'show field') do |f|
    f.strip!
    field_list << if f == '*'
                    '\*'
                  else
                    f
                  end
  end
  opts.on('-s', '--show_type <show_type>', 'select show type: json or array') do |s|
    show_type = s
  end
  opts.on('-h', '--help', 'show this message') do
    puts options
    exit
  end
end

if $PROGRAM_NAME == __FILE__
  options.parse!(ARGV)

  default_field = %w[suite id job_stage job_health testbox os start_time end_time]
  select_field = merge_field(default_field, field_list)
  where_list = get_where_list(ARGV)

  cmd = "#{LKP_SRC}/sbin/cci select jobs -f #{select_field.join(',')}"
  cmd += " -s #{show_type}" unless show_type.nil?
  cmd += " -w \"#{where_list.join(' AND ')}\"" unless where_list.empty?

  exec cmd
end
