namespace :merb do
task :init do
@git_fork = 'wycats' # original
@windows = (PLATFORM =~ /win32|cygwin/) rescue nil
@sudo = @windows ? "" : "sudo "
def filename_for(name)
Dir.glob("#{name}/pkg/#{File.basename(name)}*.gem")[0]
end
end
desc "Pull merb-core, merb-more, merb-plugins"
task :pull do
Rake::Task['merb:init'].invoke
%w(merb-core merb-more merb-plugins).each do |dir|
if File.exists? dir
sh "cd #{dir}; git pull"
else
sh "git clone git://github.com/#{@git_fork}/#{dir}.git"
end
end
end
desc "Uninstall all Ruby merb* gems"
task :uninstall do
Rake::Task['merb:init'].invoke
if @windows
`gem.bat list`.split("\n").select{|x| x =~ /^merb/}.map{|x| x.split(' ')[0]}.each do |gem_name|
system("gem.bat uninstall -a -i -x #{gem_name}")
end
else
sh "#{@sudo} gem list merb | grep merb | awk '{ print $1}' | xargs #{@sudo} gem uninstall"
end
end
desc "Uninstall all JRuby merb* gems"
task :juninstall do
Rake::Task['merb:init'].invoke
if @windows
`gem.bat list`.split("\n").select{|x| x =~ /^merb/}.map{|x| x.split(' ')[0]}.each do |gem_name|
system("jruby -S gem.bat uninstall -a -i -x #{gem_name}")
end
else
sh "#{@sudo} jruby -S gem list merb | grep merb | awk '{ print $1}' | xargs #{@sudo} jruby -S gem uninstall"
end
end
desc "Repackage merb-<core|more|plugins> (with all subgems)"
task :repackage do
Rake::Task['merb:init'].invoke
sh "cd merb-core; rake repackage"
Dir.glob("merb-more/merb*").each do |dir|
sh "cd #{dir}; rake repackage"
end
Dir.glob("merb-plugins/merb*").each do |dir|
sh "cd #{dir}; rake repackage"
end
end
desc "Install all Merb gems and subgems"
task :install do
Rake::Task['merb:init'].invoke
sh "#{@sudo} gem install -l -f #{Dir.glob("merb-core/pkg/merb*.gem")[0]}"
Dir.glob("merb-more/pkg/merb*.gem").each do |gem_name|
sh "#{@sudo} gem install -l -f #{gem_name}"
end
Dir.glob("merb-more/merb*").each do |dir|
sh "#{@sudo} gem install -l -f #{filename_for(dir)}"
end
Dir.glob("merb-plugins/merb*").each do |dir|
sh "#{@sudo} gem install -l -f #{filename_for(dir)}"
end
end
desc "Install all Merb gems and subgems for JRuby"
task :jinstall do
Rake::Task['merb:init'].invoke
sh "#{@sudo} jruby -S gem install -l -f #{Dir.glob("merb-core/pkg/merb*.gem")[0]}"
Dir.glob("merb-more/pkg/merb*.gem").each do |gem_name|
sh "#{@sudo} jruby -S gem install -l -f #{gem_name}"
end
Dir.glob("merb-more/merb*").each do |dir|
sh "#{@sudo} jruby -S gem install -l -f #{filename_for(dir)}"
end
Dir.glob("merb-plugins/merb*").each do |dir|
sh "#{@sudo} jruby -S gem install -l -f #{filename_for(dir)}"
end
end
end