diff options
| author | Ben Beltran <ben@freshout.us> | 2012-10-08 11:44:10 -0500 |
|---|---|---|
| committer | Ben Beltran <ben@freshout.us> | 2012-10-08 11:44:10 -0500 |
| commit | 0d23b6e515a01a5782532351821ebfa11f3d6cf2 (patch) | |
| tree | aa395b7e50ccb533d6b48b809016ac06f2d5bc8c /vim/Rakefile | |
| parent | a91731eac872b7837c2821341db5888702125cef (diff) | |
Add vim again :)
Diffstat (limited to 'vim/Rakefile')
| -rw-r--r-- | vim/Rakefile | 247 |
1 files changed, 247 insertions, 0 deletions
diff --git a/vim/Rakefile b/vim/Rakefile new file mode 100644 index 0000000..d2c938d --- /dev/null +++ b/vim/Rakefile @@ -0,0 +1,247 @@ +module VIM + Dirs = %w[ after autoload doc plugin ruby snippets syntax ftdetect ftplugin colors indent ] +end + +directory "tmp" +VIM::Dirs.each do |dir| + directory(dir) +end + +def vim_plugin_task(name, repo=nil) + cwd = File.expand_path("../", __FILE__) + dir = File.expand_path("tmp/#{name}") + subdirs = VIM::Dirs + + namespace(name) do + if repo + file dir => "tmp" do + if repo =~ /git$/ + sh "git clone #{repo} #{dir}" + + elsif repo =~ /download_script/ + if filename = `curl --silent --head #{repo} | grep attachment`[/filename=(.+)/,1] + filename.strip! + sh "curl #{repo} > tmp/#{filename}" + else + raise ArgumentError, 'unable to determine script type' + end + + elsif repo =~ /(tar|gz|vba|zip)$/ + filename = File.basename(repo) + sh "curl #{repo} > tmp/#{filename}" + + else + raise ArgumentError, 'unrecognized source url for plugin' + end + + case filename + when /zip$/ + sh "unzip -o tmp/#{filename} -d #{dir}" + + when /tar\.gz$/ + dirname = File.basename(filename, '.tar.gz') + + sh "tar zxvf tmp/#{filename}" + sh "mv #{dirname} #{dir}" + + when /vba(\.gz)?$/ + if filename =~ /gz$/ + sh "gunzip -f tmp/#{filename}" + filename = File.basename(filename, '.gz') + end + + # TODO: move this into the install task + mkdir_p dir + lines = File.readlines("tmp/#{filename}") + current = lines.shift until current =~ /finish$/ # find finish line + + while current = lines.shift + # first line is the filename (possibly followed by garbage) + # some vimballs use win32 style path separators + path = current[/^(.+?)(\t\[{3}\d)?$/, 1].gsub '\\', '/' + + # then the size of the payload in lines + current = lines.shift + num_lines = current[/^(\d+)$/, 1].to_i + + # the data itself + data = lines.slice!(0, num_lines).join + + # install the data + Dir.chdir dir do + mkdir_p File.dirname(path) + File.open(path, 'w'){ |f| f.write(data) } + end + end + end + end + + task :pull => dir do + if repo =~ /git$/ + Dir.chdir dir do + sh "git pull" + end + end + end + + task :install => [:pull] + subdirs do + Dir.chdir dir do + if File.exists?("Rakefile") and `rake -T` =~ /^rake install/ + sh "rake install" + elsif File.exists?("install.sh") + sh "sh install.sh" + else + subdirs.each do |subdir| + if File.exists?(subdir) + sh "cp -RfL #{subdir}/* #{cwd}/#{subdir}/" + end + end + end + end + + yield if block_given? + end + else + task :install => subdirs do + yield if block_given? + end + end + end + + desc "Install #{name} plugin" + task name do + puts + puts "*" * 40 + puts "*#{"Installing #{name}".center(38)}*" + puts "*" * 40 + puts + Rake::Task["#{name}:install"].invoke + end + task :default => name +end + +def skip_vim_plugin(name) + Rake::Task[:default].prerequisites.delete(name) +end + +vim_plugin_task "ack.vim", "git://github.com/mileszs/ack.vim.git" +vim_plugin_task "color-sampler", "git://github.com/vim-scripts/Color-Sampler-Pack.git" +vim_plugin_task "conque", "http://conque.googlecode.com/files/conque_1.1.tar.gz" +vim_plugin_task "fugitive", "git://github.com/tpope/vim-fugitive.git" +vim_plugin_task "git", "git://github.com/tpope/vim-git.git" +vim_plugin_task "haml", "git://github.com/tpope/vim-haml.git" +vim_plugin_task "indent_object", "git://github.com/michaeljsmith/vim-indent-object.git" +vim_plugin_task "javascript", "git://github.com/pangloss/vim-javascript.git" +vim_plugin_task "nerdtree", "git://github.com/wycats/nerdtree.git" +vim_plugin_task "nerdcommenter", "git://github.com/ddollar/nerdcommenter.git" +vim_plugin_task "surround", "git://github.com/tpope/vim-surround.git" +vim_plugin_task "taglist", "git://github.com/vim-scripts/taglist.vim.git" +vim_plugin_task "vividchalk", "git://github.com/tpope/vim-vividchalk.git" +vim_plugin_task "solarized", "git://github.com/altercation/vim-colors-solarized.git" +vim_plugin_task "supertab", "git://github.com/ervandew/supertab.git" +vim_plugin_task "cucumber", "git://github.com/tpope/vim-cucumber.git" +vim_plugin_task "textile", "git://github.com/timcharper/textile.vim.git" +vim_plugin_task "rails", "git://github.com/tpope/vim-rails.git" +vim_plugin_task "rspec", "git://github.com/taq/vim-rspec.git" +vim_plugin_task "zoomwin", "git://github.com/vim-scripts/ZoomWin.git" +vim_plugin_task "snipmate", "git://github.com/msanders/snipmate.vim.git" +vim_plugin_task "markdown", "git://github.com/tpope/vim-markdown.git" +vim_plugin_task "align", "git://github.com/tsaleh/vim-align.git" +vim_plugin_task "unimpaired", "git://github.com/tpope/vim-unimpaired.git" +vim_plugin_task "searchfold", "git://github.com/vim-scripts/searchfold.vim.git" +vim_plugin_task "endwise", "git://github.com/tpope/vim-endwise.git" +vim_plugin_task "irblack", "git://github.com/wgibbs/vim-irblack.git" +vim_plugin_task "vim-coffee-script","git://github.com/kchmck/vim-coffee-script.git" +vim_plugin_task "syntastic", "git://github.com/scrooloose/syntastic.git" +vim_plugin_task "puppet", "git://github.com/ajf/puppet-vim.git" +vim_plugin_task "scala", "git://github.com/bdd/vim-scala.git" +vim_plugin_task "gist-vim", "git://github.com/mattn/gist-vim.git" + +#vim_plugin_task "hammer", "git://github.com/robgleeson/hammer.vim.git" do +# sh "gem install github-markup redcarpet" +#end + +vim_plugin_task "janus_themes" do + # custom version of railscasts theme + File.open(File.expand_path("../colors/railscasts+.vim", __FILE__), "w") do |file| + file.puts <<-VIM.gsub(/^ +/, "").gsub("<SP>", " ") + runtime colors/railscasts.vim + let g:colors_name = "railscasts+" + + set fillchars=vert:\\<SP> + set fillchars=stl:\\<SP> + set fillchars=stlnc:\\<SP> + hi StatusLine guibg=#cccccc guifg=#000000 + hi VertSplit guibg=#dddddd + VIM + end + + # custom version of jellybeans theme + File.open(File.expand_path("../colors/jellybeans+.vim", __FILE__), "w") do |file| + file.puts <<-VIM.gsub(/^ /, "") + runtime colors/jellybeans.vim + let g:colors_name = "jellybeans+" + + hi VertSplit guibg=#888888 + hi StatusLine guibg=#cccccc guifg=#000000 + hi StatusLineNC guibg=#888888 guifg=#000000 + VIM + end +end + +vim_plugin_task "molokai" do + sh "curl https://raw.github.com/mrtazz/molokai.vim/master/colors/molokai.vim > colors/molokai.vim" +end +vim_plugin_task "mustache" do + sh "curl https://raw.github.com/defunkt/mustache/master/contrib/mustache.vim > syntax/mustache.vim" + File.open(File.expand_path('../ftdetect/mustache.vim', __FILE__), 'w') do |file| + file << "au BufNewFile,BufRead *.mustache setf mustache" + end +end +vim_plugin_task "arduino","git://github.com/vim-scripts/Arduino-syntax-file.git" do + File.open(File.expand_path('../ftdetect/arduino.vim', __FILE__), 'w') do |file| + file << "au BufNewFile,BufRead *.pde setf arduino" + end +end +vim_plugin_task "vwilight" do + sh "curl https://raw.github.com/gist/796172/724c7ca237a7f6b8d857c4ac2991cfe5ffb18087 > colors/vwilight.vim" +end + +if File.exists?(janus = File.expand_path("~/.janus.rake")) + puts "Loading your custom rake file" + import(janus) +end + +desc "Update the documentation" +task :update_docs do + puts "Updating VIM Documentation..." + system "vim -e -s <<-EOF\n:helptags ~/.vim/doc\n:quit\nEOF" +end + +desc "link vimrc to ~/.vimrc" +task :link_vimrc do + %w[ vimrc gvimrc ].each do |file| + dest = File.expand_path("~/.#{file}") + unless File.exist?(dest) + ln_s(File.expand_path("../#{file}", __FILE__), dest) + end + end +end + +task :clean do + system "git clean -dfx" +end + +desc "Pull the latest" +task :pull do + system "git pull" +end + +task :default => [ + :update_docs, + :link_vimrc +] + +desc "Clear out all build artifacts and rebuild the latest Janus" +task :upgrade => [:clean, :pull, :default] + |