masa21kik/csvconv

View on GitHub
bin/csvconv

Summary

Maintainability
Test Coverage
#!/usr/bin/env ruby

require "csvconv"
require "optparse"

options = { sep: "," }
output = STDOUT
format = :json

opt = OptionParser.new
opt.on("--json", "Output in JSON format") { format = :json }
opt.on("--yaml", "Output in YAML format") { format = :yaml }
opt.on("--ltsv", "Output in LTSV format") { format = :ltsv }
opt.on("-s", "--separator SEP", "Set separator character (default is ',')") {|v| options[:sep] = v }
opt.on("-o", "--output FILE", "Write output to file") {|v| output = File.open(v, "w") }
opt.on("-H", "--headers HEADERS", "List of headers separated with ','") {|v| options[:header] = v.split(",") }
opt.on("-h", "--help", "Show this message") { abort(opt.help) }
opt.on("-v", "--version", "Show version") { puts Csvconv::VERSION }
opt.parse!(ARGV)

inputs = ARGV.empty? ? [STDIN] : ARGV.map {|f| File.open(f) }
inputs.each do |input|
  output.puts Csvconv.send("csv2#{format}", input, options)
end

output.close