diff --git a/lib/svi.rb b/lib/svi.rb index 59f9ea2..5bd922b 100644 --- a/lib/svi.rb +++ b/lib/svi.rb @@ -9,6 +9,7 @@ module Svi def checkout(url) last_checkout_message = "" + checked_out_paths = [] clear_message = lambda do if last_checkout_message.size > 0 clear = "" @@ -25,10 +26,26 @@ module Svi SvnRunner.run_svn("checkout", [url], allow_interactive: true) do |line| if line =~ /^A.{4}(.*)$/ path = $1 + checked_out_paths << path clear_message[] last_checkout_message = "Checking out #{path}..." $stdout.write(last_checkout_message) $stdout.flush + elsif line =~ /^\sU\s{3}/ + # Ignore the 'U'pdate line of the checkout directory itself. + elsif line =~ /^Checked out revision (\d+)/ + revision = $1 + clear_message[] + n_files = 0 + n_directories = 0 + checked_out_paths.uniq.each do |path| + if File.directory?(path) + n_directories += 1 + else + n_files += 1 + end + end + $stdout.puts "Checked out revision #{revision}: #{n_files} file#{n_files == 1 ? '' : 's'}, #{n_directories} director#{n_directories == 1 ? 'y' : 'ies'}" else clear_message[] $stdout.puts line