class JYRon::CLI::CMDBinding
Public Class Methods
exit_on_failure?()
click to toggle source
# File lib/jyron/cli.rb, line 77 def self.exit_on_failure? true end
Public Instance Methods
mediator()
click to toggle source
# File lib/jyron/cli.rb, line 27 def mediator components = options.to_h.keys.map(&:to_sym) if options[:file] then begin data = readfile(options[:file]) rescue HelpersError => e cli_exit case: :not_found, more: e end elsif $stdin.ready? data = STDIN.read else cli_exit case: :option_needed, more: "Data from STDIN or file ( --file|-f <filename> )" end #Adapters adapters = [] adapters = options[:adapters].split(',').map(&:to_sym) if options[:adapters] invalid_adapters = [] adapters.each {|adapter| invalid_adapters.push adapter unless ADAPTERS.include? adapter } cli_exit case: :configuration_error, more: "Adapter(s) : #{invalid_adapters.join(', ')} not found" unless invalid_adapters.empty? data_pipe = JYRon::Mediator::new adapters: adapters # inputs inputs = components.select{|value| value =~ /^from/} & CLI_INPUTS.keys cli_exit case: :options_incompatibility, more: "Only one inputs type requiered" unless inputs.size < 2 cli_exit case: :option_needed, more: "Inputs type requiered (--from-<type>)" if inputs.empty? input = inputs.first begin data_pipe.send(input, data) rescue BadInputFormat => e cli_exit case: :status_ko, more: "Bad Input format : #{e}" end # filters filters = components.select{|value| value =~ /^filter/} filters.each do |filter| meth = filter.to_s.gsub('filter-','') data_pipe.send meth.to_sym, options[filter] end # outputs outputs = components.select{|value| value =~ /^to/} & CLI_OUTPUTS.keys cli_exit case: :options_incompatibility, more: "Only one outputs type requiered" unless outputs.size < 2 cli_exit case: :option_needed, more: "Outputs type requiered (--to-<type>)" if outputs.empty? output = outputs.first puts data_pipe.send output end