]> git.r.bdr.sh - rbdr/dotfiles/blob - vim/Rakefile
Add M1 z config
[rbdr/dotfiles] / vim / Rakefile
1 module VIM
2 Dirs = %w[ after autoload doc plugin ruby snippets syntax ftdetect ftplugin colors indent ]
3 end
4
5 directory "tmp"
6 VIM::Dirs.each do |dir|
7 directory(dir)
8 end
9
10 def vim_plugin_task(name, repo=nil)
11 cwd = File.expand_path("../", __FILE__)
12 dir = File.expand_path("tmp/#{name}")
13 subdirs = VIM::Dirs
14
15 namespace(name) do
16 if repo
17 file dir => "tmp" do
18 if repo =~ /git$/
19 sh "git clone #{repo} #{dir}"
20
21 elsif repo =~ /download_script/
22 if filename = `curl --silent --head #{repo} | grep attachment`[/filename=(.+)/,1]
23 filename.strip!
24 sh "curl #{repo} > tmp/#{filename}"
25 else
26 raise ArgumentError, 'unable to determine script type'
27 end
28
29 elsif repo =~ /(tar|gz|vba|zip)$/
30 filename = File.basename(repo)
31 sh "curl #{repo} > tmp/#{filename}"
32
33 else
34 raise ArgumentError, 'unrecognized source url for plugin'
35 end
36
37 case filename
38 when /zip$/
39 sh "unzip -o tmp/#{filename} -d #{dir}"
40
41 when /tar\.gz$/
42 dirname = File.basename(filename, '.tar.gz')
43
44 sh "tar zxvf tmp/#{filename}"
45 sh "mv #{dirname} #{dir}"
46
47 when /vba(\.gz)?$/
48 if filename =~ /gz$/
49 sh "gunzip -f tmp/#{filename}"
50 filename = File.basename(filename, '.gz')
51 end
52
53 # TODO: move this into the install task
54 mkdir_p dir
55 lines = File.readlines("tmp/#{filename}")
56 current = lines.shift until current =~ /finish$/ # find finish line
57
58 while current = lines.shift
59 # first line is the filename (possibly followed by garbage)
60 # some vimballs use win32 style path separators
61 path = current[/^(.+?)(\t\[{3}\d)?$/, 1].gsub '\\', '/'
62
63 # then the size of the payload in lines
64 current = lines.shift
65 num_lines = current[/^(\d+)$/, 1].to_i
66
67 # the data itself
68 data = lines.slice!(0, num_lines).join
69
70 # install the data
71 Dir.chdir dir do
72 mkdir_p File.dirname(path)
73 File.open(path, 'w'){ |f| f.write(data) }
74 end
75 end
76 end
77 end
78
79 task :pull => dir do
80 if repo =~ /git$/
81 Dir.chdir dir do
82 sh "git pull"
83 end
84 end
85 end
86
87 task :install => [:pull] + subdirs do
88 Dir.chdir dir do
89 if File.exists?("Rakefile") and `rake -T` =~ /^rake install/
90 sh "rake install"
91 elsif File.exists?("install.sh")
92 sh "sh install.sh"
93 else
94 subdirs.each do |subdir|
95 if File.exists?(subdir)
96 sh "cp -RfL #{subdir}/* #{cwd}/#{subdir}/"
97 end
98 end
99 end
100 end
101
102 yield if block_given?
103 end
104 else
105 task :install => subdirs do
106 yield if block_given?
107 end
108 end
109 end
110
111 desc "Install #{name} plugin"
112 task name do
113 puts
114 puts "*" * 40
115 puts "*#{"Installing #{name}".center(38)}*"
116 puts "*" * 40
117 puts
118 Rake::Task["#{name}:install"].invoke
119 end
120 task :default => name
121 end
122
123 def skip_vim_plugin(name)
124 Rake::Task[:default].prerequisites.delete(name)
125 end
126
127 vim_plugin_task "ack.vim", "git://github.com/mileszs/ack.vim.git"
128 vim_plugin_task "color-sampler", "git://github.com/vim-scripts/Color-Sampler-Pack.git"
129 vim_plugin_task "conque", "http://conque.googlecode.com/files/conque_1.1.tar.gz"
130 vim_plugin_task "fugitive", "git://github.com/tpope/vim-fugitive.git"
131 vim_plugin_task "git", "git://github.com/tpope/vim-git.git"
132 vim_plugin_task "haml", "git://github.com/tpope/vim-haml.git"
133 vim_plugin_task "indent_object", "git://github.com/michaeljsmith/vim-indent-object.git"
134 vim_plugin_task "javascript", "git://github.com/pangloss/vim-javascript.git"
135 vim_plugin_task "nerdtree", "git://github.com/wycats/nerdtree.git"
136 vim_plugin_task "nerdcommenter", "git://github.com/ddollar/nerdcommenter.git"
137 vim_plugin_task "surround", "git://github.com/tpope/vim-surround.git"
138 vim_plugin_task "taglist", "git://github.com/vim-scripts/taglist.vim.git"
139 vim_plugin_task "vividchalk", "git://github.com/tpope/vim-vividchalk.git"
140 vim_plugin_task "solarized", "git://github.com/altercation/vim-colors-solarized.git"
141 vim_plugin_task "supertab", "git://github.com/ervandew/supertab.git"
142 vim_plugin_task "cucumber", "git://github.com/tpope/vim-cucumber.git"
143 vim_plugin_task "textile", "git://github.com/timcharper/textile.vim.git"
144 vim_plugin_task "rails", "git://github.com/tpope/vim-rails.git"
145 vim_plugin_task "rspec", "git://github.com/taq/vim-rspec.git"
146 vim_plugin_task "zoomwin", "git://github.com/vim-scripts/ZoomWin.git"
147 vim_plugin_task "snipmate", "git://github.com/msanders/snipmate.vim.git"
148 vim_plugin_task "markdown", "git://github.com/tpope/vim-markdown.git"
149 vim_plugin_task "align", "git://github.com/tsaleh/vim-align.git"
150 vim_plugin_task "unimpaired", "git://github.com/tpope/vim-unimpaired.git"
151 vim_plugin_task "searchfold", "git://github.com/vim-scripts/searchfold.vim.git"
152 vim_plugin_task "endwise", "git://github.com/tpope/vim-endwise.git"
153 vim_plugin_task "irblack", "git://github.com/wgibbs/vim-irblack.git"
154 vim_plugin_task "vim-coffee-script","git://github.com/kchmck/vim-coffee-script.git"
155 vim_plugin_task "syntastic", "git://github.com/scrooloose/syntastic.git"
156 vim_plugin_task "puppet", "git://github.com/ajf/puppet-vim.git"
157 vim_plugin_task "scala", "git://github.com/bdd/vim-scala.git"
158 vim_plugin_task "gist-vim", "git://github.com/mattn/gist-vim.git"
159
160 #vim_plugin_task "hammer", "git://github.com/robgleeson/hammer.vim.git" do
161 # sh "gem install github-markup redcarpet"
162 #end
163
164 vim_plugin_task "janus_themes" do
165 # custom version of railscasts theme
166 File.open(File.expand_path("../colors/railscasts+.vim", __FILE__), "w") do |file|
167 file.puts <<-VIM.gsub(/^ +/, "").gsub("<SP>", " ")
168 runtime colors/railscasts.vim
169 let g:colors_name = "railscasts+"
170
171 set fillchars=vert:\\<SP>
172 set fillchars=stl:\\<SP>
173 set fillchars=stlnc:\\<SP>
174 hi StatusLine guibg=#cccccc guifg=#000000
175 hi VertSplit guibg=#dddddd
176 VIM
177 end
178
179 # custom version of jellybeans theme
180 File.open(File.expand_path("../colors/jellybeans+.vim", __FILE__), "w") do |file|
181 file.puts <<-VIM.gsub(/^ /, "")
182 runtime colors/jellybeans.vim
183 let g:colors_name = "jellybeans+"
184
185 hi VertSplit guibg=#888888
186 hi StatusLine guibg=#cccccc guifg=#000000
187 hi StatusLineNC guibg=#888888 guifg=#000000
188 VIM
189 end
190 end
191
192 vim_plugin_task "molokai" do
193 sh "curl https://raw.github.com/mrtazz/molokai.vim/master/colors/molokai.vim > colors/molokai.vim"
194 end
195 vim_plugin_task "mustache" do
196 sh "curl https://raw.github.com/defunkt/mustache/master/contrib/mustache.vim > syntax/mustache.vim"
197 File.open(File.expand_path('../ftdetect/mustache.vim', __FILE__), 'w') do |file|
198 file << "au BufNewFile,BufRead *.mustache setf mustache"
199 end
200 end
201 vim_plugin_task "arduino","git://github.com/vim-scripts/Arduino-syntax-file.git" do
202 File.open(File.expand_path('../ftdetect/arduino.vim', __FILE__), 'w') do |file|
203 file << "au BufNewFile,BufRead *.pde setf arduino"
204 end
205 end
206 vim_plugin_task "vwilight" do
207 sh "curl https://raw.github.com/gist/796172/724c7ca237a7f6b8d857c4ac2991cfe5ffb18087 > colors/vwilight.vim"
208 end
209
210 if File.exists?(janus = File.expand_path("~/.janus.rake"))
211 puts "Loading your custom rake file"
212 import(janus)
213 end
214
215 desc "Update the documentation"
216 task :update_docs do
217 puts "Updating VIM Documentation..."
218 system "vim -e -s <<-EOF\n:helptags ~/.vim/doc\n:quit\nEOF"
219 end
220
221 desc "link vimrc to ~/.vimrc"
222 task :link_vimrc do
223 %w[ vimrc gvimrc ].each do |file|
224 dest = File.expand_path("~/.#{file}")
225 unless File.exist?(dest)
226 ln_s(File.expand_path("../#{file}", __FILE__), dest)
227 end
228 end
229 end
230
231 task :clean do
232 system "git clean -dfx"
233 end
234
235 desc "Pull the latest"
236 task :pull do
237 system "git pull"
238 end
239
240 task :default => [
241 :update_docs,
242 :link_vimrc
243 ]
244
245 desc "Clear out all build artifacts and rebuild the latest Janus"
246 task :upgrade => [:clean, :pull, :default]
247