main(argv = ARGV)
click to toggle source
# File lib/taskjuggler/Tj3AppBase.rb, line 108 def main(argv = ARGV) if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new(@mininumRubyVersion) error('tj3app_ruby_version', 'This program requires at least Ruby version ' + "#{@mininumRubyVersion}!") end # Install signal handler to exit gracefully on CTRL-C. intHandler = Kernel.trap('INT') do begin fatal('tj3app_user_abort', "Aborting on user request!") rescue RuntimeError exit 1 end end retVal = 0 begin args = processArguments(argv) # If DEBUG mode has been enabled, we restore the INT trap handler again # to get Ruby backtrackes. Kernel.trap('INT', intHandler) if $DEBUG unless @silent puts "#{AppConfig.softwareName} v#{AppConfig.version} - " + "#{AppConfig.packageInfo}\n\n" + "Copyright (c) #{AppConfig.copyright.join(', ')}\n" + " by #{AppConfig.authors.join(', ')}\n\n" + "#{AppConfig.license}\n" end @rc = RuntimeConfig.new(AppConfig.packageName, @configFile) begin MessageHandlerInstance.instance.trapSetup = true retVal = appMain(args) MessageHandlerInstance.instance.trapSetup = false rescue TjRuntimeError # We have hit a sitatuation that we can't recover from. A message # was severed via the MessageHandler to inform the user and we now # abort the program. return 1 end rescue Exception => e if e.is_a?(SystemExit) || e.is_a?(Interrupt) # Don't show backtrace on user interrupt unless we are in debug mode. $stderr.puts e.backtrace.join("\n") if $DEBUG 1 else fatal('crash_trap', "#{e}\n#{e.backtrace.join("\n")}\n\n" + "#{'*' * 79}\nYou have triggered a bug in " + "#{AppConfig.softwareName} version #{AppConfig.version}!\n" + "Please see the user manual on how to get this bug fixed!\n" + "#{'*' * 79}\n") end end # Exit value in case everything was fine. retVal end