def setup(options = {})
@running = true
@lock = Mutex.new
@options = options.dup
@watchdir = (options[:watchdir] && File.expand_path(options[:watchdir])) || Dir.pwd
@runner = ::Guard::Runner.new
@scope = { :plugins => [], :groups => [] }
Dir.chdir(@watchdir)
::Guard::UI.clear(:force => true)
setup_debug
deprecated_options_warning
setup_groups
setup_guards
setup_listener
setup_signal_traps
setup_from_guardfile
setup_scopes
runner.deprecation_warning if options[:show_deprecations]
setup_notifier
setup_interactor
self
end