Browse Source

Merge 6f101a4480 into 7d9b10874e

pull/560/merge
Brian Nash 11 years ago
parent
commit
f7e54dd089
3 changed files with 62 additions and 1 deletions
  1. +16
    -1
      autoload/vundle/config.vim
  2. +15
    -0
      autoload/vundle/installer.vim
  3. +31
    -0
      autoload/vundle/scripts.vim

+ 16
- 1
autoload/vundle/config.vim View File

@ -18,6 +18,18 @@ func! vundle#config#bundle(arg, ...)
call s:rtp_add_a()
call s:rtp_add_defaults()
endif
if !exists('g:vundle_no_deps') || !g:vundle_no_deps
let deps = vundle#scripts#getdeps(bundle)
if !empty(deps)
for dependency in deps
if !has_key(g:bundle_names, dependency)
call vundle#config#bundle(dependency)
endif
endfor
endif
endif
return bundle
endf
@ -97,6 +109,9 @@ funct! s:check_bundle_name(bundle)
\ ' previously used the name "' . a:bundle.name . '"' .
\ '. Skipping Plugin ' . a:bundle.name_spec . '.'
return 0
elseif a:bundle.name !~ '\v^%(\.?[A-Za-z0-9_-])+$'
echoerr 'Invalid plugin name: ' . a:bundle.name
return 0
endif
let g:bundle_names[a:bundle.name] = a:bundle.name_spec
return 1
@ -262,7 +277,7 @@ let s:bundle = {}
" return -- the target location to clone this bundle to
" ---------------------------------------------------------------------------
func! s:bundle.path()
return s:expand_path(g:bundle_dir.'/'.self.name)
return s:expand_path(g:bundle_dir.'/') . self.name
endf


+ 15
- 0
autoload/vundle/installer.vim View File

@ -455,6 +455,21 @@ func! s:sync(bang, bundle) abort
return 'error'
end
if !exists('g:vundle_no_deps') || !g:vundle_no_deps
let deps = vundle#scripts#getdeps(a:bundle)
if !empty(deps)
for dependency in deps
if !has_key(g:bundle_names, dependency)
call s:log("Dependency: '" . dependency . "'")
let newbundle = vundle#config#bundle(dependency)
if (s:sync(a:bang, newbundle) == 'error')
return 'error'
endif
endif
endfor
endif
endif
if empty(initial_sha)
return 'new'
endif


+ 31
- 0
autoload/vundle/scripts.vim View File

@ -264,4 +264,35 @@ func! s:load_scripts(bang)
return eval(readfile(f, 'b')[0])
endf
" ---------------------------------------------------------------------------
" Get the dependencies of the given bundle.
"
" bundle -- The bundle to check. (must be installed)
" return -- List of bundle names.
" ---------------------------------------------------------------------------
func! vundle#scripts#getdeps(bundle)
if filereadable(a:bundle['rtpath'] . '/addon-info.json')
let file = join(readfile(a:bundle['rtpath'] . '/addon-info.json'), '')
let true = 1
let false = 0
let null = ''
sandbox let tmp_dependencyentries = eval(file)
let dependencyentries = get(tmp_dependencyentries, 'dependencies', {})
let bundles_needed = []
for [dep_name, dep_info] in items(dependencyentries)
if !empty(dep_info)
if get(dep_info, 'type', '') ==? 'git'
let new_dep = get(dep_info, 'url', '')
if !empty(new_dep)
let bundles_needed += [new_dep]
endif
endif
endif
endfor
return bundles_needed
endif
return []
endf
" vim: set expandtab sts=2 ts=2 sw=2 tw=78 norl:

Loading…
Cancel
Save