add initial checkout handler
This commit is contained in:
parent
7af56e8363
commit
0a1ddbfd3f
27
lib/svi.rb
27
lib/svi.rb
@ -1,3 +1,4 @@
|
||||
require_relative "svi/ansi"
|
||||
require_relative "svi/cli"
|
||||
require_relative "svi/svn_runner"
|
||||
require_relative "svi/version"
|
||||
@ -7,6 +8,32 @@ 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
|
||||
|
||||
|
21
lib/svi/ansi.rb
Normal file
21
lib/svi/ansi.rb
Normal file
@ -0,0 +1,21 @@
|
||||
module Svi
|
||||
module Ansi
|
||||
|
||||
class << self
|
||||
|
||||
def cursor_up(n = 1)
|
||||
"\e[#{n}A"
|
||||
end
|
||||
|
||||
def cursor_back(n = 1)
|
||||
"\e[#{n}D"
|
||||
end
|
||||
|
||||
def erase_cursor_to_eos
|
||||
"\e[J"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user