jenkins-wargemmer/Rakefile

78 lines
2.6 KiB
Ruby

require 'bundler/setup'
require 'erb'
INS = FileList['template/**/*.in']
def render(src, dest, use_binding = binding)
File.open(dest, "w", File.stat(src).mode) do |output|
result = ERB.new(File.read(src)).result(use_binding)
output.write(result)
end
end
task :gem, :version do |t, options|
jenkins_version = options.version
raise "invalid version number: #{options.version}" unless jenkins_version.to_f > 0
directory gem_dir = "pkg/#{jenkins_version}"
outs = INS.map do |f|
filename = File.join(f.split('/')[1..-1])
directory dest_dir = File.join(gem_dir, File.dirname(filename))
file(File.join(dest_dir, File.basename(filename, '.in')) => [f, dest_dir]) do |out|
render f, out.name, binding
end
end
directory war_dir = "#{gem_dir}/lib/jenkins"
warfile = file("#{war_dir}/jenkins.war" => war_dir) do |f|
Dir.chdir(File.dirname(f.name)) do
sh "wget http://updates.jenkins-ci.org/download/war/#{jenkins_version}/jenkins.war"
end
end
gemspec = file("#{gem_dir}/jenkins-war.gemspec" => outs + [warfile]) do |f|
Gem::Specification.new do |s|
s.name = "jenkins-war"
s.version = jenkins_version
s.platform = Gem::Platform::RUBY
s.authors = ["Charles Lowell"]
s.email = ["cowboyd@thefrontside.net"]
s.homepage = "http://rubygems.org/gems/jenkins-war"
s.summary = "fetch and use a specific jenkins version with rubygems"
s.description = "download and install a specific version of the jenkins war file which can be used for either running a server, or for plugin development"
s.rubyforge_project = "jenkins-war"
# s.files = `git ls-files`.split("\n")
# s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
s.executables = ['jenkins.war']
s.require_paths = ["lib"]
sh "touch #{f.name}"
sh "rm -rf #{gem_dir}/*.gem"
Dir.chdir(gem_dir) do
s.files = FileList['**/*'].to_a
File.open("#{s.name}.gemspec", "w") do |f|
f.write(s.to_ruby)
end
end
end
end
gem = file "#{gem_dir}/jenkins-war-#{jenkins_version}.gem" => gemspec do
Dir.chdir(gem_dir) do
Gem::Builder.new(eval(File.read(File.basename(gemspec.name)))).build
end
end
gem.invoke
end
task :install, :version do |t, options|
Rake::Task["gem"].invoke(options.version)
sh "gem install pkg/#{options.version}/jenkins-war-#{options.version}.gem"
end
task :push, :version do |t, options|
Rake::Task["gem"].invoke(options.version)
sh "gem push pkg/#{options.version}/jenkins-war-#{options.version}.gem"
end
task :clean do
sh "rm -rf pkg"
end