DannyBen/menu_commander

View on GitHub
bin/menu

Summary

Maintainability
Test Coverage
#!/usr/bin/env ruby
require 'menu_commander'
require 'colsole'
include Colsole

router = MenuCommander::CLI.router

begin
  exit router.run ARGV
rescue MenuCommander::Interrupt, Interrupt => e
  message = e.message
  message = 'Interrupted... Goodbye' if message.empty?
  say! "\n#{message}"
  exit 0
rescue MenuCommander::Exit => e
  say e.message if e.message
  exit 0
rescue MenuCommander::MenuNotFound => e
  say! e.message
  if e.paths && e.config
    message = "Looked for g`#{e.config}` in"
    if e.paths.size == 1
      message += " g`#{e.paths.first}`"
      say! message
    else
      say! message
      e.paths.each do |path|
        say! "- g`#{path}`"
      end
    end
  end
  exit 1
rescue => e
  puts e.backtrace.reverse if ENV['DEBUG']
  say! "r`#{e.class}: #{e.message}`"
  exit 1
end