#!/usr/bin/env ruby

require 'dbf'
require 'optparse'

params = ARGV.getopts('h', 's', 'a', 'c')

if params['h'] then
  puts "usage: #{File.basename(__FILE__)} [-h|-s|-a|-c] filename"
  puts "  -h = print this message"
  puts "  -s = print summary information"
  puts "  -a = create an ActiveRecord::Schema"
  puts "  -c = create a csv file"
else

  filename = ARGV.shift
  abort "You must supply a filename on the command line" unless filename

  # create an ActiveRecord::Schema
  if params['a']
    table = DBF::Table.new filename
    puts table.schema
  end

  if params['s']
    table = DBF::Table.new filename
    puts
    puts "Database: #{filename}"
    puts "Type: (#{table.version}) #{table.version_description}"
    puts "Memo File: #{table.has_memo_file? ? 'true' : 'false'}"
    puts "Records: #{table.record_count}"

    puts "\nFields:"
    puts "Name             Type       Length     Decimal"
    puts "-" * 78
    table.columns.each do |f|
      puts "%-16s %-10s %-10s %-10s" % [f.name, f.type, f.length, f.decimal]
    end
  end

  if params['c']
   table = DBF::Table.new filename
   table.to_csv
  end

end
