def run
parse_my_options
sanity_check_options
ensure_nginx_installed
determine_various_resource_locations
require_app_finder
@app_finder = AppFinder.new(@args, @options)
@apps = @app_finder.scan
@plugin.call_hook(:found_apps, @apps)
extra_controller_options = {}
@plugin.call_hook(:before_creating_nginx_controller, extra_controller_options)
create_nginx_controller(extra_controller_options)
begin
start_nginx
show_intro_message
daemonize if @options[:daemonize]
Thread.abort_on_exception = true
@plugin.call_hook(:nginx_started, @nginx)
watch_log_files_in_background if should_watch_logs?
wait_until_nginx_has_exited
rescue Interrupt
stop_threads
stop_nginx
exit 2
rescue SignalException => signal
stop_threads
stop_nginx
if signal.message == 'SIGINT' || signal.message == 'SIGTERM'
exit 2
else
raise
end
rescue Exception => e
stop_threads
stop_nginx
raise
ensure
stop_threads
end
ensure
if @temp_dir
FileUtils.rm_rf(@temp_dir) rescue nil
end
@plugin.call_hook(:cleanup)
end