lib/lapidarius/cli.rb in lapidarius-4.1.0 vs lib/lapidarius/cli.rb in lapidarius-4.1.1

- old
+ new

@@ -19,19 +19,20 @@ parser.parse!(@args) end def call @spinner.call do - @io.puts output + @output = cut end + @io.puts @output end private def cutter @cutter.new(name: @name, cmd_klass: @command, version: @version, remote: @remote) end - private def output + private def cut return unless @name gem = cutter.call @tree::new(gem).to_s rescue Gem::NotInstalledError => e e.message @@ -62,23 +63,26 @@ end class Spinner CHARS = %w[| / - \\] - def initialize(fps = 15, delay = 1.0) + def initialize(io = STDOUT, fps = 15, delay = 1.0) + @io = io @fps = fps.to_i @delay = delay.to_f / @fps @iter = 0 end def call spinner = Thread.new do while @iter do - print CHARS[(@iter+=1) % CHARS.length] + @io.print CHARS[(@iter+=1) % CHARS.length] sleep @delay - print "\b" + @io.print "\b" + @io.flush end end + ensure yield.tap do @iter = false spinner.join end end