Initial import
[ruby-io-mixins.git] / Rakefile
1 begin
2   require 'rubygems'
3 rescue LoadError
4 end
5 require 'rake'
6 require 'rake/testtask'
7 require 'rake/rdoctask'
8 require 'rake/packagetask'
9 require 'rake/gempackagetask'
10 require 'rake/contrib/sshpublisher'
11 # require 'rake/contrib/rubyforgepublisher'
12 require File.join(File.dirname(__FILE__), 'lib', 'io', 'mixins')
13
14 PKG_BUILD     = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
15 PKG_NAME      = 'io-mixins'
16 PKG_VERSION   = IO::MIXINS_VERSION
17 PKG_FILE_NAME   = "#{PKG_NAME}-#{PKG_VERSION}"
18 # PKG_DESTINATION = ENV["PKG_DESTINATION"] || "../#{PKG_NAME}"
19
20 # RELEASE_NAME  = "REL #{PKG_VERSION}"
21
22 RUBY_FORGE_PROJECT = PKG_NAME
23 RUBY_FORGE_USER    = "tpope"
24
25 desc "Default task: test"
26 task :default => [ :test ]
27
28
29 # Run the unit tests
30 Rake::TestTask.new { |t|
31   t.libs << "test"
32   t.test_files = Dir['test/*_test.rb'] + Dir['test/test_*.rb']
33   t.verbose = true
34 }
35
36
37 # Generate the RDoc documentation
38 Rake::RDocTask.new { |rdoc|
39   rdoc.rdoc_dir = 'doc'
40   rdoc.rdoc_files.add('lib')
41   rdoc.main     = "IO"
42   rdoc.title    = "IO Mixins"
43   rdoc.options << '--inline-source'
44   rdoc.options << '-d' if `which dot` =~ /\/dot/
45 }
46
47 desc "Generate the RDoc documentation for RI"
48 task :ri do
49   system("rdoc","--ri","lib")
50 end
51
52
53
54 # Create compressed packages
55 spec = Gem::Specification.new do |s|
56   s.platform = Gem::Platform::RUBY
57   s.name = PKG_NAME
58   s.summary = 'Pure Ruby IO Mixins'
59   s.description = 'IO::Readable, IO::Writable, and IO::Seekable'
60   s.version = PKG_VERSION
61
62   s.author = 'Tim Pope'
63   s.email = 'r*by@tpope.in#o'.tr('*#','uf')
64   s.rubyforge_project = RUBY_FORGE_PROJECT
65
66   s.has_rdoc = true
67   # s.requirements << 'none'
68   s.require_path = 'lib'
69   # s.autorequire = 'action_web_service'
70
71   s.files = [ "Rakefile", "setup.rb" ]
72   s.files = s.files + Dir.glob( "lib/**/*.rb" )
73   s.files = s.files + Dir.glob( "test/**/*" ).reject { |item| item.include?( "\.svn" ) }
74 end
75
76 Rake::GemPackageTask.new(spec) do |p|
77   p.gem_spec = spec
78   p.need_tar = true
79   p.need_zip = true
80 end
81
82
83 # Publish beta gem
84 desc "Publish the gem"
85 task :pgem => [:package] do
86   Rake::SshFilePublisher.new("tpope#{'@'}tpope.us", "public_html/gems", "pkg", "#{PKG_FILE_NAME}.gem").upload
87   # `ssh tpope@tpope.us './gemupdate.sh'`
88 end
89
90 # Publish documentation
91 desc "Publish the API documentation"
92 task :pdoc => [:rdoc] do
93   Rake::SshDirPublisher.new("tpope#{'@'}tpope.us", "public_html/#{PKG_NAME}", "doc").upload
94 end
95
96 # desc "Publish the release files to RubyForge."
97 # task :release => [ :package ] do
98   # `rubyforge login`
99
100   # for ext in %w( gem tgz zip )
101     # release_command = "rubyforge add_release #{PKG_NAME} #{PKG_NAME} 'REL #{PKG_VERSION}' pkg/#{PKG_NAME}-#{PKG_VERSION}.#{ext}"
102     # puts release_command
103     # system(release_command)
104   # end
105 # end
106
107 begin
108   require 'rcov/rcovtask'
109   Rcov::RcovTask.new do |t|
110     t.test_files = Dir['test/*_test.rb'] + Dir['test/test_*.rb']
111     t.verbose = true
112     # t.rcov_opts << "--text-report"
113     # t.rcov_opts << "--exclude \\\\A/var/lib/gems"
114     t.rcov_opts << "--exclude '/(active_record|active_support)\\b'"
115   end
116 rescue LoadError
117 end