2011-01-03 04:12:33 +00:00
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 |
2011-02-03 15:57:16 +00:00
jenkins_version = options . version
raise " invalid version number: #{ options . version } " unless jenkins_version . to_f > 0
directory gem_dir = " pkg/ #{ jenkins_version } "
2011-01-03 04:12:33 +00:00
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
2011-02-03 15:57:16 +00:00
directory war_dir = " #{ gem_dir } /lib/jenkins "
warfile = file ( " #{ war_dir } /jenkins.war " = > war_dir ) do | f |
2011-01-03 04:12:33 +00:00
Dir . chdir ( File . dirname ( f . name ) ) do
2011-02-03 15:57:16 +00:00
sh " wget http://updates.jenkins-ci.org/download/war/ #{ jenkins_version } /jenkins.war "
2011-01-03 04:12:33 +00:00
end
end
2011-02-03 15:57:16 +00:00
gemspec = file ( " #{ gem_dir } /jenkins-war.gemspec " = > outs + [ warfile ] ) do | f |
2011-01-03 04:12:33 +00:00
Gem :: Specification . new do | s |
2011-02-03 15:57:16 +00:00
s . name = " jenkins-war "
s . version = jenkins_version
2011-01-03 04:12:33 +00:00
s . platform = Gem :: Platform :: RUBY
s . authors = [ " Charles Lowell " ]
s . email = [ " cowboyd@thefrontside.net " ]
2011-02-03 15:57:16 +00:00
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 "
2011-01-03 04:12:33 +00:00
# s.files = `git ls-files`.split("\n")
# s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
2011-02-03 15:57:16 +00:00
s . executables = [ 'jenkins.war' ]
2011-01-03 04:12:33 +00:00
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
2011-02-03 15:57:16 +00:00
gem = file " #{ gem_dir } /jenkins-war- #{ jenkins_version } .gem " = > gemspec do
2011-01-03 04:12:33 +00:00
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 )
2011-02-03 15:57:16 +00:00
sh " gem install pkg/ #{ options . version } /jenkins-war- #{ options . version } .gem "
2011-01-03 04:12:33 +00:00
end
2011-01-06 22:18:04 +00:00
task :push , :version do | t , options |
Rake :: Task [ " gem " ] . invoke ( options . version )
2011-02-03 15:57:16 +00:00
sh " gem push pkg/ #{ options . version } /jenkins-war- #{ options . version } .gem "
2011-01-06 22:18:04 +00:00
end
2011-01-03 04:12:33 +00:00
task :clean do
sh " rm -rf pkg "
end