# File lib/guard.rb, line 46
    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