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