fixing #160
[acts_as_ferret.git] / rakefile
blob563a1c22c2ed8aeb5c4ccd7d3893866d6434a54c
1 # rakefile for acts_as_ferret. 
2 # use to create a gem or generate rdoc api documentation.
4 # RELEASE creation:
5 # rake release REL=x.y.z 
7 require 'rake'
8 require 'rake/rdoctask'
9 require 'rake/packagetask'
10 require 'rake/gempackagetask'
11 require 'rake/testtask'
12 require 'rake/contrib/rubyforgepublisher'
14 def announce(msg='')
15   STDERR.puts msg
16 end
19 PKG_NAME      = 'acts_as_ferret'
20 PKG_VERSION   = ENV['REL']
21 PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
22 RUBYFORGE_PROJECT = 'actsasferret'
23 RUBYFORGE_USER    = 'jkraemer'
25 desc 'Default: run unit tests.'
26 task :default => :test
28 desc 'Test the acts_as_ferret plugin.'
29 Rake::TestTask.new(:test) do |t|
30   t.libs << 'lib'
31   t.pattern = 'test/**/*_test.rb'
32   t.verbose = true
33 end
35 desc 'Generate documentation for the acts_as_ferret plugin.'
36 Rake::RDocTask.new(:rdoc) do |rdoc|
37   rdoc.rdoc_dir = 'html'
38   rdoc.title    = "acts_as_ferret - Ferret based full text search for any ActiveRecord model"
39   rdoc.options << '--line-numbers' << '--inline-source'
40   rdoc.options << '--main' << 'README'
41   rdoc.rdoc_files.include('README', 'LICENSE')
42   rdoc.template = "#{ENV['template']}.rb" if ENV['template']
43   rdoc.rdoc_files.include('lib/**/*.rb')
44 end
46 desc "Publish the API documentation"
47 task :pdoc => [:rdoc] do
48   Rake::RubyForgePublisher.new(RUBYFORGE_PROJECT, RUBYFORGE_USER).upload
49 end
51 if PKG_VERSION
52   spec = Gem::Specification.new do |s|
53     s.name            = PKG_NAME
54     s.version         = PKG_VERSION
55     s.platform        = Gem::Platform::RUBY
56     s.summary         = "acts_as_ferret - Ferret based full text search for any ActiveRecord model"
57     s.files  = Dir.glob('**/*', File::FNM_DOTMATCH).reject do |f| 
58       [ /\.$/, /sqlite$/, /\.log$/, /^pkg/, /\.svn/, /\.\w+\.sw.$/,
59         /^html/, /\~$/, /\/\._/, /\/#/ ].any? {|regex| f =~ regex }
60     end
61     #s.files           = FileList["{lib,test}/**/*"].to_a + %w(README MIT-LICENSE CHANGELOG)
62   # s.files.delete  ...    
63     s.require_path    = 'lib'
64     s.autorequire     = 'acts_as_ferret'
65     s.has_rdoc        = true
66   # s.test_files      = Dir['test/**/*_test.rb']
67     s.author          = "Jens Kraemer"
68     s.email           = "jk@jkraemer.net"
69     s.homepage        = "http://projects.jkraemer.net/acts_as_ferret"
70   end
72   package_task = Rake::GemPackageTask.new(spec) do |pkg|
73     pkg.need_tar = true
74   end
76   # Validate that everything is ready to go for a release.
77   task :prerelease do
78     announce 
79     announce "**************************************************************"
80     announce "* Making RubyGem Release #{PKG_VERSION}"
81     announce "**************************************************************"
82     announce  
83     # Are all source files checked in?
84     if ENV['RELTEST']
85       announce "Release Task Testing, skipping checked-in file test"
86     else
87       announce "Pulling in svn..."
88       `svk pull .`
89       announce "Checking for unchecked-in files..."
90       data = `svk st`
91       unless data =~ /^$/
92         fail "SVK status is not clean ... do you have unchecked-in files?"
93       end
94       announce "No outstanding checkins found ... OK"
95 #      announce "Pushing to svn..."
96 #      `svk push .`
97     end
98   end
99   
100   
101   desc "tag the new release"
102   task :tag => [ :prerelease ] do
103     reltag = "REL_#{PKG_VERSION.gsub(/\./, '_')}"
104     reltag << ENV['REUSE'].gsub(/\./, '_') if ENV['REUSE']
105     announce "Tagging with [#{PKG_VERSION}]"
106     if ENV['RELTEST']
107       announce "Release Task Testing, skipping tagging"
108     else
109       `svn copy -m 'tagging version #{PKG_VERSION}' svn://projects.jkraemer.net/acts_as_ferret/trunk/plugin svn://projects.jkraemer.net/acts_as_ferret/tags/#{PKG_VERSION}`
110       `svn del -m 'remove old stable' svn://projects.jkraemer.net/acts_as_ferret/tags/stable`
111       `svn copy -m 'tagging version #{PKG_VERSION} as stable' svn://projects.jkraemer.net/acts_as_ferret/tags/#{PKG_VERSION} svn://projects.jkraemer.net/acts_as_ferret/tags/stable`
112     end
113   end
114   
115   # Upload release to rubyforge
116   desc "Upload release to rubyforge"
117   task :prel => [ :tag, :prerelease, :package ] do
118     `rubyforge login`
119     release_command = "rubyforge add_release #{RUBYFORGE_PROJECT} #{PKG_NAME} '#{PKG_VERSION}' pkg/#{PKG_NAME}-#{PKG_VERSION}.gem"
120     puts release_command
121     system(release_command)
122     `rubyforge config #{RUBYFORGE_PROJECT}`
123     release_command = "rubyforge add_file #{RUBYFORGE_PROJECT} #{PKG_NAME} '#{PKG_VERSION}' pkg/#{PKG_NAME}-#{PKG_VERSION}.tgz"
124     puts release_command
125     system(release_command)
126   end
127   
128   desc 'Publish the gem and API docs'
129   task :release => [:pdoc, :prel ]
130