lib/mutant/reporter/cli/tput.rb in mutant-0.7.8 vs lib/mutant/reporter/cli/tput.rb in mutant-0.7.9
- old
+ new
@@ -1,26 +1,44 @@
module Mutant
class Reporter
class CLI
# Interface to the optionally present tput binary
class Tput
- include Adamantium, Concord::Public.new(:available, :prepare, :restore)
+ include Adamantium, Concord::Public.new(:prepare, :restore)
private_class_method :new
- capture = lambda do |command|
+ # Return 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
-
- reset = capture.('tput reset')
- save = capture.('tput sc') if reset
- restore = capture.('tput rc') if save
- clean = capture.('tput ed') if restore
-
- UNAVAILABLE = new(false, nil, nil)
-
- INSTANCE = clean ? new(true, reset + save, restore + clean) : UNAVAILABLE
+ private_class_method :capture
end # TPUT
end # CLI
end # Reporter
end # Mutant