lib/opener/kaf_naf_parser/cli.rb in opener-kaf-naf-parser-1.1.0 vs lib/opener/kaf_naf_parser/cli.rb in opener-kaf-naf-parser-2.0.0

- old
+ new

@@ -1,92 +1,66 @@ module Opener class KafNafParser ## - # CLI wrapper around {Opener::LanguageIdentifier} using OptionParser. + # CLI wrapper around {Opener::KafNafParser} using Slop. # - # @!attribute [r] options - # @return [Hash] - # @!attribute [r] option_parser - # @return [OptionParser] + # @!attribute [r] parser + # @return [Slop] # class CLI - attr_reader :options, :option_parser + attr_reader :parser + def initialize + @parser = configure_slop + end + ## - # @param [Hash] options + # @param [Array] argv # - def initialize(options = {}) - @options = DEFAULT_OPTIONS.merge(options) + def run(argv = ARGV) + parser.parse(argv) + end - @option_parser = OptionParser.new do |opts| - opts.program_name = 'kaf-naf-parser' - opts.summary_indent = ' ' + ## + # @return [Slop] + # + def configure_slop + return Slop.new(:strict => false, :indent => 2, :help => true) do + banner 'Usage: kaf-naf-parser [OPTIONS]' - opts.on('-h', '--help', 'Shows this help message') do - show_help - end + separator <<-EOF.chomp - opts.on('-v', '--version', 'Shows the current version') do - show_version - end +About: - opts.on('-k', '--tokaf', 'Parses input to KAF') do - @options[:conversion] = "to-kaf" - end + Component for converting KAF documents to NAF documents and vice-versa. + This command reads input from STDIN. - opts.on('-n', '--tonaf', 'Parses input to NAF') do - @options[:conversion] = "to-naf" - end +Example: - opts.on('-l', '--log', 'Enable logging to STDERR') do - @options[:logging] = true - end - - opts.separator <<-EOF - -Examples: - - cat example.kaf | #{opts.program_name} --tonaf # Basic usage - cat example.kaf | #{opts.program_name} --tonaf -l # Logs information to STDERR + cat some_file.kaf | kaf-naf-parser --tonaf EOF - end - end - ## - # @param [String] input - # - def run(input) - option_parser.parse!(options[:args]) + separator "\nOptions:\n" - tagger = KafNafParser.new(options) + on :v, :version, 'Shows the current version' do + abort "kaf-naf-parser v#{VERSION} on #{RUBY_DESCRIPTION}" + end - stdout, stderr, process = tagger.run(input) + on :k, :tokaf, 'Converts NAF to KAF' + on :n, :tonaf, 'Converts KAF to NAF' - if process.success? - puts stdout + run do |opts, args| + conversion = opts[:tonaf] ? 'to-naf' : 'to-kaf' + parser = KafNafParser.new( + :args => args, + :conversion => conversion + ) - if options[:logging] and !stderr.empty? - STDERR.puts(stderr) + input = STDIN.tty? ? nil : STDIN.read + + puts parser.run(input) end - else - abort stderr end - end - - private - - ## - # Shows the help message and exits the program. - # - def show_help - abort option_parser.to_s - end - - ## - # Shows the version and exits the program. - # - def show_version - abort "#{option_parser.program_name} v#{VERSION} on #{RUBY_DESCRIPTION}" end end # CLI end # KafNafParser end # Opener