require 'rake/clean' require 'fileutils' vimFolder = "Tools/vim" bundles_dir = File.join(File.dirname(__FILE__), "#{vimFolder}/bundle/") pluginsFile = File.join(File.dirname(__FILE__), "#{vimFolder}/plugins.txt") CLOBBER.include "#{bundles_dir}/*" task :default => ['clobber', 'vim:reinstall'] namespace :vim do directory "#{bundles_dir}" desc "reinstalls all vim plugins from #{vimFolder}/plugins.txt" task :reinstall do puts "loading plugins into #{bundles_dir}..." lines = IO.readlines pluginsFile puts "Loading #{lines.length} plugins..." lines.each { |source| loadTask = Rake::Task['vim:loadPlugin'] loadTask.invoke source.sub "\n", '' loadTask.reenable() } puts "Plugins installed!" end desc 'Loads a vim plugin from a git repo.' task :loadPlugin, [:source] => "#{bundles_dir}" do |t, args| raise "Must specify git repo to pull from." unless args.source not(nil) dir = gitName args.source puts "Installing #{dir}...." Dir.chdir bundles_dir do sh "git clone #{args.source} #{dir}" FileUtils.rm_rf(File.join(dir, ".git")) end puts "\n\n" end desc "installs a new plugin and adds it to #{vimFolder}/plugins.txt" task :install, [:sourceName] do |t, args| raise "Must specify git repo to pull from." unless args.sourceName not(nil) source = "git://github.com/#{args.sourceName}.git" Rake::Task['vim:loadPlugin'].invoke source puts "Adding to #{vimFolder}/plugins.txt" File.open pluginsFile, 'a' do |file| file.puts "#{source}\n" end end end def gitName(gitRepo) return gitRepo.split('/').last.sub(/\.git$/, '') end