require_relative "svi/ansi" require_relative "svi/cli" require_relative "svi/svn_runner" require_relative "svi/version" require "svi/svi" module Svi class << self def checkout(url) last_checkout_message = "" clear_message = lambda do if last_checkout_message.size > 0 clear = "" lines = (last_checkout_message.size + C.screen_width - 1) / C.screen_width if lines > 1 clear += Ansi.cursor_up(lines - 1) end clear += Ansi.cursor_back(999) clear += Ansi.erase_cursor_to_eos $stdout.write(clear) last_checkout_message = "" end end SvnRunner.run_svn("checkout", [url], allow_interactive: true) do |line| if line =~ /^A.{4}(.*)$/ path = $1 clear_message[] last_checkout_message = "Checking out #{path}..." $stdout.write(last_checkout_message) $stdout.flush else clear_message[] $stdout.puts line end end 0 end end end