Sha256: d77a08fcc1fff376adcc3750245ddea96d65097298a18105155cbdb535ec4afa

Contents?: true

Size: 1.34 KB

Versions: 5

Compression:

Stored size: 1.34 KB

Contents

require 'open3'
module SSHKit

  module Backend

    class Local < Printer

      def initialize(&block)
        @host = Host.new(hostname: 'localhost') # just for logging
        @block = block
      end

      def run
        instance_exec(&@block)
      end

      def test(*args)
        options = args.extract_options!.merge(
          raise_on_non_zero_exit: false,
          verbosity: Logger::DEBUG
        )
        _execute(*[*args, options]).success?
      end

      def execute(*args)
        _execute(*args).success?
      end

      def capture(*args)
        options = { verbosity: Logger::DEBUG }.merge(args.extract_options!)
        _execute(*[*args, options]).full_stdout.strip
      end

      private

      def _execute(*args)
        command(*args).tap do |cmd|
          output << cmd

          cmd.started = Time.now

          stdout, stderr, exit_status =
            if RUBY_ENGINE == 'jruby'
              _, o, e, t = Open3.popen3('/usr/bin/env', 'sh', '-c', cmd.to_command)
              [o.read, e.read, t.value]
            else
              Open3.capture3(cmd.to_command)
            end

          cmd.stdout = stdout
          cmd.full_stdout += stdout

          cmd.stderr = stderr
          cmd.full_stderr += stderr

          cmd.exit_status = exit_status.to_i

          output << cmd
        end
      end

    end
  end
end

Version data entries

5 entries across 3 versions & 2 rubygems

Version Path
honeybadger-2.4.0 vendor/gems/ruby/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/local.rb
honeybadger-2.4.0 vendor/gems/ruby/2.1.0/gems/sshkit-1.5.1/lib/sshkit/backends/local.rb
honeybadger-2.4.0 vendor/gems/ruby/2.2.0/gems/sshkit-1.5.1/lib/sshkit/backends/local.rb
sshkit-1.5.1 lib/sshkit/backends/local.rb
sshkit-1.5.0 lib/sshkit/backends/local.rb