Remove plugin directory on failure during installation (#75)
If installation process is terminated during `git submodule ...`, the directory ends up in an inconsistent directory. This commit ensures that the directory is removed on failure.
This commit is contained in:
parent
6406d73c9a
commit
5ec1faefab
1 changed files with 6 additions and 3 deletions
9
plug.vim
9
plug.vim
|
@ -789,7 +789,7 @@ function! s:update_parallel(pull, todo, threads)
|
||||||
logh.call
|
logh.call
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
bt = proc { |cmd, name, type|
|
bt = proc { |cmd, name, type, cleanup|
|
||||||
tried = timeout = 0
|
tried = timeout = 0
|
||||||
begin
|
begin
|
||||||
tried += 1
|
tried += 1
|
||||||
|
@ -820,6 +820,7 @@ function! s:update_parallel(pull, todo, threads)
|
||||||
killall fd.pid
|
killall fd.pid
|
||||||
fd.close
|
fd.close
|
||||||
end
|
end
|
||||||
|
cleanup.call if cleanup
|
||||||
if e.is_a?(Timeout::Error) && tried < tries
|
if e.is_a?(Timeout::Error) && tried < tries
|
||||||
3.downto(1) do |countdown|
|
3.downto(1) do |countdown|
|
||||||
s = countdown > 1 ? 's' : ''
|
s = countdown > 1 ? 's' : ''
|
||||||
|
@ -868,7 +869,7 @@ function! s:update_parallel(pull, todo, threads)
|
||||||
ok, result =
|
ok, result =
|
||||||
if exists
|
if exists
|
||||||
dir = esc dir
|
dir = esc dir
|
||||||
ret, data = bt.call "#{cd} #{dir} && git rev-parse --abbrev-ref HEAD 2>&1 && git config remote.origin.url", nil, nil
|
ret, data = bt.call "#{cd} #{dir} && git rev-parse --abbrev-ref HEAD 2>&1 && git config remote.origin.url"
|
||||||
current_uri = data.lines.to_a.last
|
current_uri = data.lines.to_a.last
|
||||||
if !ret
|
if !ret
|
||||||
if data =~ /^Interrupted|^Timeout/
|
if data =~ /^Interrupted|^Timeout/
|
||||||
|
@ -891,7 +892,9 @@ function! s:update_parallel(pull, todo, threads)
|
||||||
else
|
else
|
||||||
d = esc dir.sub(%r{[\\/]+$}, '')
|
d = esc dir.sub(%r{[\\/]+$}, '')
|
||||||
log.call name, 'Installing ...', :install
|
log.call name, 'Installing ...', :install
|
||||||
bt.call "(git clone #{progress} --recursive #{uri} -b #{branch} #{d} 2>&1 && cd #{esc dir} && #{subm})", name, :install
|
bt.call "(git clone #{progress} --recursive #{uri} -b #{branch} #{d} 2>&1 && cd #{esc dir} && #{subm})", name, :install, proc {
|
||||||
|
FileUtils.rm_rf dir
|
||||||
|
}
|
||||||
end
|
end
|
||||||
mtx.synchronize { VIM::command("let s:prev_update.new['#{name}'] = 1") } if !exists && ok
|
mtx.synchronize { VIM::command("let s:prev_update.new['#{name}'] = 1") } if !exists && ok
|
||||||
log.call name, result, ok
|
log.call name, result, ok
|
||||||
|
|
Loading…
Reference in a new issue