1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
require 'optparse'
module Launchy
class Cli
attr_reader :options
def initialize
@options = {}
end
def parser
@parser ||= OptionParser.new do |op|
op.banner = "Usage: launchy [options] thing-to-launch"
op.separator ""
op.separator "Launch Options:"
op.on( "-a", "--application APPLICATION",
"Explicitly specify the application class to use in the launch") do |app|
@options[:application] = app
end
op.on( "-d", "--debug",
"Force debug. Output lots of information.") do |d|
@options[:debug] = true
end
op.on( "-e", "--engine RUBY_ENGINE",
"Force launchy to behave as if it was on a particular ruby engine.") do |e|
@options[:ruby_engine] = e
end
op.on( "-n", "--dry-run", "Don't launchy, print the command to be executed on stdout" ) do |x|
@options[:dry_run] = true
end
op.on( "-o", "--host-os HOST_OS",
"Force launchy to behave as if it was on a particular host os.") do |os|
@options[:host_os] = os
end
op.separator ""
op.separator "Standard Options:"
op.on( "-h", "--help", "Print this message.") do |h|
$stdout.puts op.to_s
exit 0
end
op.on( "-v", "--version", "Output the version of Launchy") do |v|
$stdout.puts "Launchy version #{Launchy::VERSION}"
exit 0
end
end
end
def parse( argv, env )
parser.parse!( argv )
return true
rescue ::OptionParser::ParseError => pe
error_output( pe )
end
def good_run( argv, env )
if parse( argv, env ) then
Launchy.open( argv.shift, options ) { |e| error_output( e ) }
return true
else
return false
end
end
def error_output( error )
$stderr.puts "ERROR: #{error}"
Launchy.log "ERROR: #{error}"
error.backtrace.each do |bt|
Launchy.log bt
end
$stderr.puts "Try `#{parser.program_name} --help' for more information."
return false
end
def run( argv = ARGV, env = ENV )
exit 1 unless good_run( argv, env )
end
end
end
|