#!/usr/bin/env ruby

def usage
  puts "USAGE: #{$0} [--ri] [--refe [-d DIR]] [--rdoc [-d DIR]] [--rd FILE] [--bitclust -d DIR] ..."
  exit 
end

rrsedir = "#{ENV["HOME"]}/.rrse"
if ARGV.size == 0
  usage
end

if ARGV.first == "-h"
  usage
end

if ARGV.first == "-v"
  puts "rrse version 0.4"
  exit
end

if !FileTest.directory?(rrsedir)
  puts "mkdir #{rrsedir}"
  Dir.mkdir(rrsedir)
end

n = 0
loop do
  case ARGV.shift
  when nil
    break
  when "--ri"
    system("rrse-ri-listdescs > #{rrsedir}/table.#{n}")
    system("rrse-ri-listdescs -r > #{rrsedir}/rev-table.#{n}")
  when "--rdoc"
    if ARGV.first == "-d"
      opt = "#{ENV["RI"]} -d #{ARGV[1]}"
      2.times{ ARGV.shift }
    else
      opt = "#{ENV["RI"]} -d #{ENV["HOME"]}/.rdoc"
    end
    system("RI=\"#{opt}\" rrse-ri-listdescs > #{rrsedir}/table.#{n}")
    system("RI=\"#{opt}\" rrse-ri-listdescs -r > #{rrsedir}/rev-table.#{n}")
  when "--refe"
    if ARGV.first == "-d"
      opt = "-d #{ARGV[1]}"
      2.times{ ARGV.shift }
    else
      opt = ""
    end
    system("rrse-refe-listdescs #{opt} > #{rrsedir}/table.#{n}")
    system("rrse-refe-listdescs -r #{opt} > #{rrsedir}/rev-table.#{n}")
  when "--rd"
    file = ARGV.shift
    system("rrse-rd-listdescs #{file} > #{rrsedir}/table.#{n}")
    system("rrse-rd-listdescs -r #{file} > #{rrsedir}/rev-table.#{n}")
  when "--bitclust"
    if ARGV.first == "-d"
      opt = "-d #{ARGV[1]}"
      2.times{ ARGV.shift }
    else
      opt = ""
    end
    system("rrse-bitclust-listdescs #{opt} > #{rrsedir}/table.#{n}")
    system("rrse-bitclust-listdescs -r #{opt} > #{rrsedir}/rev-table.#{n}")
  else
    usage
  end

  n += 1
end

tables = (0..n-1).map{|k| "#{rrsedir}/table.#{k}"}.join(" ")
rev_tables = (0..n-1).map{|k| "#{rrsedir}/rev-table.#{k}"}.join(" ")
system("rrse-merge-tables #{tables} > #{rrsedir}/table")
system("rrse-merge-tables #{rev_tables} > #{rrsedir}/rev-table")

system("rm #{tables}")
system("rm #{rev_tables}")
