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/cli"
|
||||||
require_relative "svi/svn_runner"
|
require_relative "svi/svn_runner"
|
||||||
require_relative "svi/version"
|
require_relative "svi/version"
|
||||||
@ -7,6 +8,32 @@ module Svi
|
|||||||
class << self
|
class << self
|
||||||
|
|
||||||
def checkout(url)
|
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
|
0
|
||||||
end
|
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