vimjar 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +8 -0
- data/.rspec +2 -0
- data/.rvmrc +1 -0
- data/.travis.yml +11 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +85 -0
- data/Guardfile +21 -0
- data/LICENSE +21 -0
- data/README.md +89 -0
- data/Rakefile +2 -0
- data/bin/vimjar +10 -0
- data/cucumber.yml +6 -0
- data/features/init.feature +37 -0
- data/features/install.feature +8 -0
- data/features/list.feature +7 -0
- data/features/step_definitions/command_steps.rb +21 -0
- data/features/step_definitions/environment_steps.rb +34 -0
- data/features/step_definitions/file_check_steps.rb +20 -0
- data/features/step_definitions/message_steps.rb +23 -0
- data/features/step_definitions/plugin_steps.rb +4 -0
- data/features/support/env.rb +22 -0
- data/features/support/hook.rb +8 -0
- data/features/support/stubs.rb +0 -0
- data/features/uninstall.feature +12 -0
- data/features/update.feature +7 -0
- data/lib/templates/BundleFile +1 -0
- data/lib/vim-jar/cli.rb +91 -0
- data/lib/vim-jar/config.rb +126 -0
- data/lib/vim-jar/installer/base.rb +9 -0
- data/lib/vim-jar/installer/git.rb +66 -0
- data/lib/vim-jar/installer.rb +7 -0
- data/lib/vim-jar/loader.rb +32 -0
- data/lib/vim-jar/pathogen/pathogen_v1.2.vim +139 -0
- data/lib/vim-jar/plugin/git.rb +41 -0
- data/lib/vim-jar/plugin.rb +23 -0
- data/lib/vim-jar/version.rb +5 -0
- data/lib/vim-jar.rb +24 -0
- data/script/github_crawler.rb +76 -0
- data/spec/spec_helper.rb +24 -0
- data/spec/vim-jar/config_spec.rb +126 -0
- data/spec/vim-jar/git-config +16 -0
- data/spec/vim-jar/gitmodules +6 -0
- data/spec/vim-jar/installer/git_spec.rb +51 -0
- data/spec/vim-jar/loader_spec.rb +43 -0
- data/spec/vim-jar/plugin/git-config +1 -0
- data/spec/vim-jar/plugin/git_spec.rb +41 -0
- data/spec/vim-jar/plugin/gitmodules +1 -0
- data/spec/vim-jar/plugin_spec.rb +11 -0
- data/spec/vim-jar_test.rb +17 -0
- data/vimjar.gemspec +33 -0
- metadata +302 -0
@@ -0,0 +1,126 @@
|
|
1
|
+
module Vim
|
2
|
+
module Jar
|
3
|
+
class Config
|
4
|
+
require 'singleton'
|
5
|
+
include Singleton
|
6
|
+
|
7
|
+
def vim_jar_root
|
8
|
+
Pathname.new(File.expand_path("../../",File.dirname(__FILE__)))
|
9
|
+
end
|
10
|
+
|
11
|
+
def vim_jar_lib
|
12
|
+
Pathname.new(vim_jar_root.join("lib"))
|
13
|
+
end
|
14
|
+
|
15
|
+
def user_home
|
16
|
+
Pathname.new(ENV['VIM_JAR_USER_HOME'] || ::Gem.user_home)
|
17
|
+
end
|
18
|
+
|
19
|
+
def vim_home
|
20
|
+
Pathname.new(user_home.join(".vim"))
|
21
|
+
end
|
22
|
+
|
23
|
+
def vimrc_path
|
24
|
+
user_home.join(".vimrc")
|
25
|
+
end
|
26
|
+
|
27
|
+
def under_git?
|
28
|
+
@under_git ||= File.exist?(vim_home.join(".git"))
|
29
|
+
end
|
30
|
+
|
31
|
+
def gitmodules_file_path
|
32
|
+
vim_home.join(".gitmodules")
|
33
|
+
end
|
34
|
+
|
35
|
+
def gitconfig_file_path
|
36
|
+
vim_home.join(".git",'config')
|
37
|
+
end
|
38
|
+
|
39
|
+
def bundle_home
|
40
|
+
Pathname.new(vim_home.join("bundle"))
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
def autoload_home
|
45
|
+
Pathname.new(vim_home.join("autoload"))
|
46
|
+
end
|
47
|
+
|
48
|
+
def pathogen_path
|
49
|
+
Pathname.new(vim_home.join("autoload",'pathogen.vim'))
|
50
|
+
end
|
51
|
+
|
52
|
+
def pathogen_vim_path(version="1.2")
|
53
|
+
vim_jar_lib.join("vim-jar","pathogen","pathogen_v#{version}.vim")
|
54
|
+
end
|
55
|
+
|
56
|
+
def bundle_file_path
|
57
|
+
vim_home.join("BundleFile")
|
58
|
+
end
|
59
|
+
|
60
|
+
def bundle_template_file_path
|
61
|
+
vim_jar_lib.join("templates", "BundleFile")
|
62
|
+
end
|
63
|
+
|
64
|
+
def check
|
65
|
+
check_vim_pathes!
|
66
|
+
self.init_git_repo unless under_git?
|
67
|
+
self.setup_pathogen unless File.exist?(self.pathogen_path)
|
68
|
+
self.create_bundle_home unless File.exist?(self.bundle_home)
|
69
|
+
self.init_bundle_file unless File.exists?(self.bundle_file_path)
|
70
|
+
end
|
71
|
+
|
72
|
+
def check_vim_pathes!
|
73
|
+
%w[vim_home vimrc_path].each do |method_name|
|
74
|
+
path = self.send(method_name)
|
75
|
+
raise InitError.new("#{path} doesn't exist") unless File.exist?(path)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def init_git_repo
|
80
|
+
Dir.chdir(self.vim_home) do
|
81
|
+
message = <<-EOF
|
82
|
+
your .vim folder is not a git repository. we'll init git repository for you.
|
83
|
+
|
84
|
+
You can make use of git submodule to manage your plugins.
|
85
|
+
Futher more you can push your git repository to www.github.com.
|
86
|
+
EOF
|
87
|
+
STDOUT.puts message
|
88
|
+
system("git init")
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def create_bundle_home
|
93
|
+
FileUtils.mkdir_p(bundle_home)
|
94
|
+
STDOUT.puts "create folder for pathogen in #{bundle_home}"
|
95
|
+
end
|
96
|
+
|
97
|
+
def setup_pathogen
|
98
|
+
self.install_pathogen
|
99
|
+
STDOUT.puts <<-EOF
|
100
|
+
|
101
|
+
Pathogen is installed into #{self.pathogen_path}.
|
102
|
+
|
103
|
+
NOTICE: you need copy line below into #{self.vimrc_path}.
|
104
|
+
|
105
|
+
call pathogen#runtime_append_all_bundles()
|
106
|
+
|
107
|
+
EOF
|
108
|
+
end
|
109
|
+
|
110
|
+
def install_pathogen
|
111
|
+
FileUtils.mkdir_p(autoload_home) if !File.exist?(autoload_home)
|
112
|
+
FileUtils.cp pathogen_vim_path, pathogen_path
|
113
|
+
end
|
114
|
+
|
115
|
+
def init_bundle_file
|
116
|
+
FileUtils.cp bundle_template_file_path, bundle_file_path
|
117
|
+
STDOUT.puts <<-EOF
|
118
|
+
|
119
|
+
Writing new BundleFile to #{self.bundle_file_path}.
|
120
|
+
|
121
|
+
You can add more plugins by modify this file
|
122
|
+
EOF
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module Vim
|
2
|
+
module Jar
|
3
|
+
module Installer
|
4
|
+
module Git
|
5
|
+
extend self
|
6
|
+
|
7
|
+
def install_to(source, output_path)
|
8
|
+
Dir.chdir(config.vim_home) do
|
9
|
+
system("git submodule add #{source} #{Pathname.new(output_path).relative_path_from(config.vim_home)}")
|
10
|
+
system("git submodule init")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def uninstall_for(name)
|
15
|
+
remove_ref_from_gitmodules(name)
|
16
|
+
remove_ref_from_git_config(name)
|
17
|
+
remove_from_cache(name)
|
18
|
+
end
|
19
|
+
|
20
|
+
def remove_from_cache(name)
|
21
|
+
Dir.chdir(config.vim_home) do
|
22
|
+
system("git rm -r --cached bundle/#{name}")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def remove_ref_from_gitmodules(name)
|
27
|
+
#TODO bundle name is different to submodule name
|
28
|
+
f = File.new(config.gitmodules_file_path)
|
29
|
+
lines = f.lines.to_a
|
30
|
+
lines.delete_if do |x|
|
31
|
+
x =~ /bundle\/#{name}/ || x =~ /#{name}\.git$/
|
32
|
+
end
|
33
|
+
f.close
|
34
|
+
|
35
|
+
File.open(config.gitmodules_file_path, "w") do |ff|
|
36
|
+
lines.each do |l|
|
37
|
+
ff.puts l
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def remove_ref_from_git_config(name)
|
43
|
+
#TODO bundle name is different to submodule name
|
44
|
+
f = File.new(config.gitconfig_file_path)
|
45
|
+
lines = f.lines.to_a
|
46
|
+
lines.delete_if do |x|
|
47
|
+
x =~ /bundle\/#{name}/ || x =~ /#{name}\.git$/
|
48
|
+
end
|
49
|
+
f.close
|
50
|
+
|
51
|
+
File.open(config.gitconfig_file_path, "w") do |ff|
|
52
|
+
lines.each do |l|
|
53
|
+
ff.puts l
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def config
|
59
|
+
::Vim::Jar::Config.instance
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Vim
|
2
|
+
module Jar
|
3
|
+
class Loader
|
4
|
+
|
5
|
+
def execute
|
6
|
+
self.instance_eval read_bundle_file
|
7
|
+
end
|
8
|
+
|
9
|
+
def read_bundle_file
|
10
|
+
if File.exist? config.bundle_file_path
|
11
|
+
File.read config.bundle_file_path
|
12
|
+
else
|
13
|
+
raise Vim::Jar::InstallError.new("Can not find BundleFile in #{config.bundle_file_path}")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def plugin(repo_url, args={})
|
18
|
+
p = Plugin::Git.new(repo_url)
|
19
|
+
p.install
|
20
|
+
end
|
21
|
+
|
22
|
+
def theme(repo_url, args={})
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
def config
|
27
|
+
::Vim::Jar::Config.instance
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,139 @@
|
|
1
|
+
" pathogen.vim - path option manipulation
|
2
|
+
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
3
|
+
" Version: 1.2
|
4
|
+
|
5
|
+
" Install in ~/.vim/autoload (or ~\vimfiles\autoload).
|
6
|
+
"
|
7
|
+
" API is documented below.
|
8
|
+
|
9
|
+
if exists("g:loaded_pathogen") || &cp
|
10
|
+
finish
|
11
|
+
endif
|
12
|
+
let g:loaded_pathogen = 1
|
13
|
+
|
14
|
+
" Split a path into a list.
|
15
|
+
function! pathogen#split(path) abort " {{{1
|
16
|
+
if type(a:path) == type([]) | return a:path | endif
|
17
|
+
let split = split(a:path,'\\\@<!\%(\\\\\)*\zs,')
|
18
|
+
return map(split,'substitute(v:val,''\\\([\\,]\)'',''\1'',"g")')
|
19
|
+
endfunction " }}}1
|
20
|
+
|
21
|
+
" Convert a list to a path.
|
22
|
+
function! pathogen#join(...) abort " {{{1
|
23
|
+
if type(a:1) == type(1) && a:1
|
24
|
+
let i = 1
|
25
|
+
let space = ' '
|
26
|
+
else
|
27
|
+
let i = 0
|
28
|
+
let space = ''
|
29
|
+
endif
|
30
|
+
let path = ""
|
31
|
+
while i < a:0
|
32
|
+
if type(a:000[i]) == type([])
|
33
|
+
let list = a:000[i]
|
34
|
+
let j = 0
|
35
|
+
while j < len(list)
|
36
|
+
let escaped = substitute(list[j],'[,'.space.']\|\\[\,'.space.']\@=','\\&','g')
|
37
|
+
let path .= ',' . escaped
|
38
|
+
let j += 1
|
39
|
+
endwhile
|
40
|
+
else
|
41
|
+
let path .= "," . a:000[i]
|
42
|
+
endif
|
43
|
+
let i += 1
|
44
|
+
endwhile
|
45
|
+
return substitute(path,'^,','','')
|
46
|
+
endfunction " }}}1
|
47
|
+
|
48
|
+
" Convert a list to a path with escaped spaces for 'path', 'tag', etc.
|
49
|
+
function! pathogen#legacyjoin(...) abort " {{{1
|
50
|
+
return call('pathogen#join',[1] + a:000)
|
51
|
+
endfunction " }}}1
|
52
|
+
|
53
|
+
" Remove duplicates from a list.
|
54
|
+
function! pathogen#uniq(list) abort " {{{1
|
55
|
+
let i = 0
|
56
|
+
let seen = {}
|
57
|
+
while i < len(a:list)
|
58
|
+
if has_key(seen,a:list[i])
|
59
|
+
call remove(a:list,i)
|
60
|
+
else
|
61
|
+
let seen[a:list[i]] = 1
|
62
|
+
let i += 1
|
63
|
+
endif
|
64
|
+
endwhile
|
65
|
+
return a:list
|
66
|
+
endfunction " }}}1
|
67
|
+
|
68
|
+
" Returns a hash indicating which filetype features are enabled.
|
69
|
+
function! pathogen#filetype() abort " {{{1
|
70
|
+
redir => output
|
71
|
+
silent filetype
|
72
|
+
redir END
|
73
|
+
let result = {}
|
74
|
+
let result.detection = match(output,'detection:ON') >= 0
|
75
|
+
let result.indent = match(output,'indent:ON') >= 0
|
76
|
+
let result.plugin = match(output,'plugin:ON') >= 0
|
77
|
+
return result
|
78
|
+
endfunction " }}}1
|
79
|
+
|
80
|
+
" \ on Windows unless shellslash is set, / everywhere else.
|
81
|
+
function! pathogen#separator() abort " {{{1
|
82
|
+
return !exists("+shellslash") || &shellslash ? '/' : '\'
|
83
|
+
endfunction " }}}1
|
84
|
+
|
85
|
+
" Convenience wrapper around glob() which returns a list.
|
86
|
+
function! pathogen#glob(pattern) abort " {{{1
|
87
|
+
let files = split(glob(a:pattern),"\n")
|
88
|
+
return map(files,'substitute(v:val,"[".pathogen#separator()."/]$","","")')
|
89
|
+
endfunction "}}}1
|
90
|
+
|
91
|
+
" Like pathogen#glob(), only limit the results to directories.
|
92
|
+
function! pathogen#glob_directories(pattern) abort " {{{1
|
93
|
+
return filter(pathogen#glob(a:pattern),'isdirectory(v:val)')
|
94
|
+
endfunction "}}}1
|
95
|
+
|
96
|
+
" Prepend all subdirectories of path to the rtp, and append all after
|
97
|
+
" directories in those subdirectories.
|
98
|
+
function! pathogen#runtime_prepend_subdirectories(path) " {{{1
|
99
|
+
let sep = pathogen#separator()
|
100
|
+
let before = pathogen#glob_directories(a:path.sep."*[^~]")
|
101
|
+
let after = pathogen#glob_directories(a:path.sep."*[^~]".sep."after")
|
102
|
+
let rtp = pathogen#split(&rtp)
|
103
|
+
let path = expand(a:path)
|
104
|
+
call filter(rtp,'v:val[0:strlen(path)-1] !=# path')
|
105
|
+
let &rtp = pathogen#join(pathogen#uniq(before + rtp + after))
|
106
|
+
return &rtp
|
107
|
+
endfunction " }}}1
|
108
|
+
|
109
|
+
" For each directory in rtp, check for a subdirectory named dir. If it
|
110
|
+
" exists, add all subdirectories of that subdirectory to the rtp, immediately
|
111
|
+
" after the original directory. If no argument is given, 'bundle' is used.
|
112
|
+
" Repeated calls with the same arguments are ignored.
|
113
|
+
function! pathogen#runtime_append_all_bundles(...) " {{{1
|
114
|
+
let sep = pathogen#separator()
|
115
|
+
let name = a:0 ? a:1 : 'bundle'
|
116
|
+
let list = []
|
117
|
+
for dir in pathogen#split(&rtp)
|
118
|
+
if dir =~# '\<after$'
|
119
|
+
let list += pathogen#glob_directories(substitute(dir,'after$',name.sep.'*[^~]'.sep.'after','')) + [dir]
|
120
|
+
else
|
121
|
+
let list += [dir] + pathogen#glob_directories(dir.sep.name.sep.'*[^~]')
|
122
|
+
endif
|
123
|
+
endfor
|
124
|
+
let &rtp = pathogen#join(pathogen#uniq(list))
|
125
|
+
return 1
|
126
|
+
endfunction
|
127
|
+
|
128
|
+
" }}}1
|
129
|
+
|
130
|
+
" Invoke :helptags on all non-$VIM doc directories in runtimepath.
|
131
|
+
function! pathogen#helptags() " {{{1
|
132
|
+
for dir in pathogen#split(&rtp)
|
133
|
+
if dir[0 : strlen($VIM)-1] !=# $VIM && isdirectory(dir.'/doc') && (!filereadable(dir.'/doc/tags') || filewritable(dir.'/doc/tags'))
|
134
|
+
helptags `=dir.'/doc'`
|
135
|
+
endif
|
136
|
+
endfor
|
137
|
+
endfunction " }}}1
|
138
|
+
|
139
|
+
" vim:set ft=vim ts=8 sw=2 sts=2:
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Vim
|
2
|
+
module Jar
|
3
|
+
module Plugin
|
4
|
+
class Git
|
5
|
+
include ::Vim::Jar::Installer::Git
|
6
|
+
|
7
|
+
attr_reader :name, :url, :target_path
|
8
|
+
|
9
|
+
def initialize(url, args={})
|
10
|
+
if url !~ /(https|git):\/\/github\.com/
|
11
|
+
raise InstallError.new("Not support this git repository #{url}.")
|
12
|
+
end
|
13
|
+
if url !~ /\.git$/
|
14
|
+
raise InstallError.new("#{url} is not a valid github repository url.")
|
15
|
+
end
|
16
|
+
if url.split("/").last =~ /(.+?)\.git$/
|
17
|
+
@name = $1
|
18
|
+
else
|
19
|
+
raise InstallError.new("#{url} is not a valid github repository url.")
|
20
|
+
end
|
21
|
+
@url = url
|
22
|
+
@target_path = config.bundle_home.join(name)
|
23
|
+
end
|
24
|
+
|
25
|
+
def install
|
26
|
+
if !File.exist?(target_path)
|
27
|
+
install_to(url, target_path)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def uninstall
|
32
|
+
uninstall_for(self.name)
|
33
|
+
end
|
34
|
+
|
35
|
+
def config
|
36
|
+
::Vim::Jar::Config.instance
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Vim
|
2
|
+
module Jar
|
3
|
+
module Plugin
|
4
|
+
autoload :Git, 'vim-jar/plugin/git.rb'
|
5
|
+
|
6
|
+
def self.update
|
7
|
+
Dir.chdir(config.vim_home) do
|
8
|
+
system("git submodule update")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.installed
|
13
|
+
@installed ||= Dir[config.bundle_home.join("*")].map { |bundle_path| File.basename(bundle_path) }
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.config
|
17
|
+
::Vim::Jar::Config.instance
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
|
data/lib/vim-jar.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'yaml'
|
4
|
+
require 'thor'
|
5
|
+
|
6
|
+
module Vim
|
7
|
+
module Jar
|
8
|
+
autoload :Config, 'vim-jar/config'
|
9
|
+
autoload :Plugin, 'vim-jar/plugin'
|
10
|
+
autoload :Installer, 'vim-jar/installer'
|
11
|
+
autoload :Loader, 'vim-jar/Loader'
|
12
|
+
|
13
|
+
class InitError < RuntimeError; end
|
14
|
+
class InstallError < RuntimeError; end
|
15
|
+
class ImportError < RuntimeError; end
|
16
|
+
|
17
|
+
class << self
|
18
|
+
def config
|
19
|
+
@config ||= Config.instance
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require File.expand_path("../lib/vim-jar.rb", File.dirname(__FILE__))
|
2
|
+
repo_urls = (101..110).map do |n|
|
3
|
+
"https://github.com/vim-scripts/repositories?page=#{n.to_s}"
|
4
|
+
end
|
5
|
+
|
6
|
+
plugin_urls = []
|
7
|
+
CONCURRENY = 20
|
8
|
+
curl_repo = Curl::Multi.new
|
9
|
+
#curl_plugin = Curl::Multi.new
|
10
|
+
|
11
|
+
on_failure_repo = lambda do |ex|
|
12
|
+
puts 'Failure.'
|
13
|
+
puts ex
|
14
|
+
end
|
15
|
+
|
16
|
+
on_success_repo = lambda do |body|
|
17
|
+
puts "finish "
|
18
|
+
config = ::Vim::Jar::Config.instance
|
19
|
+
body.scan(/<a href=\"(\/vim-scripts\/[\w-]+?)\">/).each do |path|
|
20
|
+
puts "import plugin https://github.com#{path} into #{config.yaml_path}"
|
21
|
+
url = "https://github.com#{path}"
|
22
|
+
name_home_page = ::Vim::Jar::Importer.extract_from_url(url)
|
23
|
+
if !::Vim::Jar::Plugin.exist? name_home_page["name"]
|
24
|
+
other_info = ::Vim::Jar::Importer.extract_from_page_source(url)
|
25
|
+
::Vim::Jar::Plugin.insert name_home_page.merge!(other_info)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
File.open(config.yaml_path, "w+") do |f|
|
29
|
+
f.puts ::Vim::Jar::Plugin.plugins.to_yaml
|
30
|
+
end
|
31
|
+
repo_urls.pop(CONCURRENY - curl_repo.requests.length).each do |url|
|
32
|
+
c = Curl::Easy.new(url) do|curl|
|
33
|
+
curl.on_body{|data| on_success_repo.call(data) }
|
34
|
+
curl.on_success {|easy| puts "success, add more easy handles" }
|
35
|
+
end
|
36
|
+
|
37
|
+
curl_repo.add(c)
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
repo_urls.pop(CONCURRENY).each do |url|
|
43
|
+
c = Curl::Easy.new(url) do|curl|
|
44
|
+
curl.on_body{|data| on_success_repo.call(data) }
|
45
|
+
curl.on_success {|easy| puts "success, add more easy handles" }
|
46
|
+
end
|
47
|
+
|
48
|
+
curl_repo.add(c)
|
49
|
+
end
|
50
|
+
|
51
|
+
curl_repo.perform
|
52
|
+
|
53
|
+
#while curl_repo.size > 0 do
|
54
|
+
#sleep 0.5
|
55
|
+
#end
|
56
|
+
#on_success_repo = lambda do |body|
|
57
|
+
#puts body
|
58
|
+
#end
|
59
|
+
#on_failure_repo = lambda do |ex|
|
60
|
+
#puts 'Failure.'
|
61
|
+
#puts ex
|
62
|
+
#end
|
63
|
+
|
64
|
+
|
65
|
+
#curl.get('http://www.example.org/', on_success, on_failure)
|
66
|
+
#curl.select([], []) while curl.size > 0
|
67
|
+
|
68
|
+
#url = URI.parse("https://github.com/vim-scripts/repositories")
|
69
|
+
#http = Net::HTTP.new(url.host, 443)
|
70
|
+
#http.use_ssl = true
|
71
|
+
#http.get(url.path) do |resp|
|
72
|
+
#resp.scan(/<a href=\"(\/vim-scripts\/[\w-]+?)\">/).each do |path|
|
73
|
+
#::Vim::Jar::Importer::import("https://github.com#{path}")
|
74
|
+
#end
|
75
|
+
#end
|
76
|
+
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
require 'rspec'
|
4
|
+
require 'FileUtils'
|
5
|
+
|
6
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__),'..','lib'))
|
7
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__),'formulars'))
|
8
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
9
|
+
|
10
|
+
ENV['VIM_JAR_USER_HOME'] = File.expand_path("../../tmp", __FILE__)
|
11
|
+
|
12
|
+
require 'vim-jar'
|
13
|
+
#require 'fakefs/spec_helpers'
|
14
|
+
|
15
|
+
RSpec.configure do |config|
|
16
|
+
#config.include FakeFS::SpecHelpers
|
17
|
+
config.before(:each) do
|
18
|
+
FileUtils.rm_rf ENV["VIM_JAR_USER_HOME"]
|
19
|
+
FileUtils.mkdir_p ENV["VIM_JAR_USER_HOME"]
|
20
|
+
FileUtils.touch File.join(ENV["VIM_JAR_USER_HOME"], ".vimrc")
|
21
|
+
FileUtils.mkdir_p File.join(ENV["VIM_JAR_USER_HOME"], ".vim")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|