Sha256: e9d32c5db86bbff135e21d8c077eca7f1d6cd5b0a930102e98e2d6b5790dfa20

Contents?: true

Size: 1.14 KB

Versions: 6

Compression:

Stored size: 1.14 KB

Contents

module Mutant
  class Reporter
    class CLI
      # Interface to the optionally present tput binary
      class Tput
        include Adamantium, Concord::Public.new(:prepare, :restore)

        private_class_method :new

        # Detected tput support
        #
        # @return [Tput]
        #   if tput support is present
        #
        # @return [nil]
        #   otherwise
        def self.detect
          reset   = capture('tput reset')
          save    = capture('tput sc') if reset
          restore = capture('tput rc') if save
          clean   = capture('tput ed') || capture('tput cd') if restore
          new(reset + save, restore + clean) if clean
        end

        # Capture output
        #
        # @param [String] command
        #   command to run
        #
        # @return [String]
        #   stdout of command on success
        #
        # @return [nil]
        #   otherwise
        def self.capture(command)
          stdout, _stderr, exitstatus = Open3.capture3(command)
          stdout if exitstatus.success?
        end
        private_class_method :capture

      end # Tput
    end # CLI
  end # Reporter
end # Mutant

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
mutant-0.8.16 lib/mutant/reporter/cli/tput.rb
mutant-0.8.15 lib/mutant/reporter/cli/tput.rb
mutant-0.8.14 lib/mutant/reporter/cli/tput.rb
mutant-0.8.13 lib/mutant/reporter/cli/tput.rb
mutant-0.8.12 lib/mutant/reporter/cli/tput.rb
mutant-0.8.11 lib/mutant/reporter/cli/tput.rb