Sha256: c185d69b2961278e0fb25455dab25073047740bf27b4cb42f65c3a1ba712852e

Contents?: true

Size: 1.54 KB

Versions: 53

Compression:

Stored size: 1.54 KB

Contents

require "guard/cli"

module Guard
  class ArubaAdapter
    def initialize(argv, stdin = STDIN, stdout = STDOUT, stderr = STDERR,
                   kernel = Kernel)
      @argv = argv
      @stdin = stdin
      @stdout = stdout
      @stderr = stderr
      @kernel = kernel

      if ENV["INSIDE_ARUBA_TEST"] == "1"
        UI.options = UI.options.merge(flush_seconds: 0)
      end
    end

    def execute!
      exit_code = execute
      # Proxy our exit code back to the injected kernel.
      @kernel.exit(exit_code)
    end

    def execute
      # Thor accesses these streams directly rather than letting
      # them be injected, so we replace them...
      $stderr = @stderr
      $stdin = @stdin
      $stdout = @stdout

      # Run our normal Thor app the way we know and love.
      CLI.start(@argv)

      # Thor::Base#start does not have a return value, assume
      # success if no exception is raised.
      0
    rescue StandardError => e
      # The ruby interpreter would pipe this to STDERR and exit 1 in the case
      # of an unhandled exception
      b = e.backtrace
      @stderr.puts "#{b.shift}: #{e.message} (#{e.class})"
      @stderr.puts b.map { |s| "\tfrom #{s}" }.join("\n")
      1
    rescue SystemExit => e
      e.status
    ensure
      # flush the logger so the output doesn't appear in next CLI invocation
      Guard.listener.stop if Guard.listener
      UI.logger.flush
      UI.logger.close
      UI.reset_logger

      # ...then we put them back.
      $stderr = STDERR
      $stdin = STDIN
      $stdout = STDOUT
    end
  end
end

Version data entries

53 entries across 53 versions & 10 rubygems

Version Path
guard-2.19.1 lib/guard/aruba_adapter.rb
guard-2.19.0 lib/guard/aruba_adapter.rb
honeybadger-5.4.0 vendor/bundle/ruby/3.2.0/gems/guard-2.18.1/lib/guard/aruba_adapter.rb
honeybadger-5.3.0 vendor/bundle/ruby/3.2.0/gems/guard-2.18.1/lib/guard/aruba_adapter.rb
guard-2.18.1 lib/guard/aruba_adapter.rb
op_connect-0.1.2 vendor/bundle/ruby/3.1.0/gems/guard-2.18.0/lib/guard/aruba_adapter.rb
guard-2.18.0 lib/guard/aruba_adapter.rb
guard-2.17.0 lib/guard/aruba_adapter.rb
qiita_org-0.1.35 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/aruba_adapter.rb
qiita_org-0.1.34 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/aruba_adapter.rb
qiita_org-0.1.33 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/aruba_adapter.rb
qiita_org-0.1.32 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/aruba_adapter.rb
qiita_org-0.1.31 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/aruba_adapter.rb
qiita_org-0.1.30 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/aruba_adapter.rb
qiita_org-0.1.29 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/aruba_adapter.rb
qiita_org-0.1.28 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/aruba_adapter.rb
qiita_org-0.1.27 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/aruba_adapter.rb
qiita_org-0.1.26 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/aruba_adapter.rb
qiita_org-0.1.25 gems/ruby/2.7.0/gems/guard-2.16.2/lib/guard/aruba_adapter.rb
guard-2.16.2 lib/guard/aruba_adapter.rb