bin/tabled in tabled-1.0.0 vs bin/tabled in tabled-1.1.0
- old
+ new
@@ -1,10 +1,11 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
require_relative '../lib/tabled'
require_relative '../lib/parsers/csv_parser'
+require_relative '../lib/parsers/json_parser'
require 'dry/cli'
require 'pathname'
module TabledCli
module CLI
@@ -17,15 +18,37 @@
argument :input, desc: 'Input file to print'
def call(input: nil, **)
return p 'File must be provided' if input.nil?
return p 'File doesn\'t exist' unless File.exist?(Pathname.new(input))
+ return p 'Unsupported file format' unless %w[.csv .json].include?(File.extname(Pathname.new(input)).downcase)
- Tabled.new(Tabled::CSVParser.parse(Pathname.new(input))).print_to_console
+ file = Pathname.new(input)
+
+ $stdout << case File.extname(file).downcase
+ when '.csv'
+ print_csv(file)
+ when '.json'
+ print_json(file)
+ end
end
+
+ def print_csv(input)
+ Tabled
+ .new(Tabled::CSVParser.parse(Pathname.new(input)))
+ .print_to_console
+ end
+
+ def print_json(input)
+ titles, values = Tabled::JSONParser.parse(Pathname.new(input))
+
+ Tabled
+ .new(values, titles: titles)
+ .print_to_console
+ end
end
- register 'print', Print, aliases: ['p', '-p', '--print']
+ register 'print', Print, aliases: %w[p -p --print]
end
end
end
Dry::CLI.new(TabledCli::CLI::Commands).call