You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.7 KiB
62 lines
1.7 KiB
require 'rake/clean'
|
|
require 'fileutils'
|
|
|
|
vimFolder = File.expand_path("~/.config/vim")
|
|
vimRuntimeFolder = "#{vimFolder}/runtime"
|
|
bundles_dir = File.join("#{vimRuntimeFolder}/bundle")
|
|
pluginsFile = File.join("#{vimFolder}/plugins.txt")
|
|
|
|
CLEAN.include "#{bundles_dir}"
|
|
|
|
task :default => ['clean', 'vim:reinstall']
|
|
|
|
|
|
namespace :vim do
|
|
|
|
directory "#{bundles_dir}"
|
|
desc "reinstalls all vim plugins from #{pluginsFile} into #{bundles_dir}"
|
|
task :reinstall do
|
|
puts "loading plugins into #{bundles_dir}..."
|
|
lines = IO.readlines pluginsFile
|
|
puts "Loading #{lines.length} plugins..."
|
|
lines.each { |source|
|
|
if source[0] != "#" then
|
|
loadTask = Rake::Task['vim:downloadPlugin']
|
|
loadTask.invoke source.sub "\n", ''
|
|
loadTask.reenable()
|
|
end
|
|
}
|
|
puts "Plugins installed!"
|
|
end
|
|
|
|
desc "downloads a vim plugin from a git repo, installs it into #{bundles_dir}"
|
|
task :downloadPlugin, [: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 "downloads a new plugin into #{bundles_dir} and adds it to #{pluginsFile}"
|
|
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:downloadPlugin'].invoke source
|
|
puts "Adding to #{pluginsFile}"
|
|
File.open pluginsFile, 'a' do |file|
|
|
file.puts "#{source}\n"
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
def gitName(gitRepo)
|
|
return gitRepo.split('/').last.sub(/\.git$/, '')
|
|
end
|
|
|