Sha256: 8cc327ce08c1ed0aa965229271681f319fae7e581dd3335e520dde560a968aa7

Contents?: true

Size: 1.46 KB

Versions: 1

Compression:

Stored size: 1.46 KB

Contents

require 'rea'
module Rea
  #
  # rea - The Research Exploring Assistant
  #
  # SYNOPSIS
  #   #{program_name} [--version] [--help] COMMAND [cmd opts] ARGS...
  #
  # OPTIONS
  # #{summarized_options}
  #
  # COMMANDS
  # #{summarized_subcommands}
  #
  # See '#{program_name} help COMMAND' for more information on a specific command.
  #
  class Command < Quickl::Delegator(__FILE__, __LINE__)

    # Install options
    options do |opt|
      @trace = false
      opt.on('--trace') do
        @trace = true
      end
      opt.on_tail("--help", "Show help") do
        raise Quickl::Help
      end
      opt.on_tail("--version", "Show version") do
        raise Quickl::Exit, 
              "rea #{Rea::VERSION} (c) 2012, Bernard Lambeau"
      end
    end

    def execute(*args)
      super
    rescue Quickl::Error
      raise
    rescue Rea::Error => ex
      if @trace
        dump_exception(ex)
      else
        $stderr.puts ex.message
      end
    rescue Exception => ex
      puts "Sorry, an internal error occured. Please report --trace to developers."
      dump_exception(ex) if @trace
    end

    private

    def dump_exception(ex, indent = 0)
      $stderr.puts ex.message.gsub(/^/m,"  "*indent)
      $stderr.puts ex.backtrace.map{|s|
        s.gsub(/^/m,"  "*(indent+1))
      }.join("\n")
      dump_exception(ex.cause, indent + 1) if ex.respond_to?(:cause)
    end

  end # class Command
end # module Rea
require_relative "command/utils"
require_relative "command/search"

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rea-0.0.1 lib/rea/command.rb