bf7bbb0201cdd4fac495b47cdf8ca5eb9b55eecf
[feedcatcher.git] / vendor / rails / activeresource / Rakefile
1 require 'rubygems'
2 require 'rake'
3 require 'rake/testtask'
4 require 'rake/rdoctask'
5 require 'rake/packagetask'
6 require 'rake/gempackagetask'
7 require 'rake/contrib/sshpublisher'
8
9 require File.join(File.dirname(__FILE__), 'lib', 'active_resource', 'version')
10
11 PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
12 PKG_NAME = 'activeresource'
13 PKG_VERSION = ActiveResource::VERSION::STRING + PKG_BUILD
14 PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
15
16 RELEASE_NAME = "REL #{PKG_VERSION}"
17
18 RUBY_FORGE_PROJECT = "activerecord"
19 RUBY_FORGE_USER = "webster132"
20
21 PKG_FILES = FileList[
22 "lib/**/*", "test/**/*", "[A-Z]*", "Rakefile"
23 ].exclude(/\bCVS\b|~$/)
24
25 desc "Default Task"
26 task :default => [ :test ]
27
28 # Run the unit tests
29
30 Rake::TestTask.new { |t|
31 activesupport_path = "#{File.dirname(__FILE__)}/../activesupport/lib"
32 t.libs << activesupport_path if File.directory?(activesupport_path)
33 t.libs << "test"
34 t.pattern = 'test/**/*_test.rb'
35 t.verbose = true
36 t.warning = true
37 }
38
39
40 # Generate the RDoc documentation
41
42 Rake::RDocTask.new { |rdoc|
43 rdoc.rdoc_dir = 'doc'
44 rdoc.title = "Active Resource -- Object-oriented REST services"
45 rdoc.options << '--line-numbers' << '--inline-source' << '-A cattr_accessor=object'
46 rdoc.options << '--charset' << 'utf-8'
47 rdoc.template = ENV['template'] ? "#{ENV['template']}.rb" : '../doc/template/horo'
48 rdoc.rdoc_files.include('README', 'CHANGELOG')
49 rdoc.rdoc_files.include('lib/**/*.rb')
50 rdoc.rdoc_files.exclude('lib/activeresource.rb')
51 }
52
53
54 # Create compressed packages
55
56 dist_dirs = [ "lib", "test", "examples", "dev-utils" ]
57
58 spec = Gem::Specification.new do |s|
59 s.platform = Gem::Platform::RUBY
60 s.name = PKG_NAME
61 s.version = PKG_VERSION
62 s.summary = "Think Active Record for web resources."
63 s.description = %q{Wraps web resources in model classes that can be manipulated through XML over REST.}
64
65 s.files = [ "Rakefile", "README", "CHANGELOG" ]
66 dist_dirs.each do |dir|
67 s.files = s.files + Dir.glob( "#{dir}/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
68 end
69
70 s.add_dependency('activesupport', '= 2.3.2' + PKG_BUILD)
71
72 s.require_path = 'lib'
73 s.autorequire = 'active_resource'
74
75 s.has_rdoc = true
76 s.extra_rdoc_files = %w( README )
77 s.rdoc_options.concat ['--main', 'README']
78
79 s.author = "David Heinemeier Hansson"
80 s.email = "david@loudthinking.com"
81 s.homepage = "http://www.rubyonrails.org"
82 s.rubyforge_project = "activeresource"
83 end
84
85 Rake::GemPackageTask.new(spec) do |p|
86 p.gem_spec = spec
87 p.need_tar = true
88 p.need_zip = true
89 end
90
91 task :lines do
92 lines, codelines, total_lines, total_codelines = 0, 0, 0, 0
93
94 for file_name in FileList["lib/active_resource/**/*.rb"]
95 next if file_name =~ /vendor/
96 f = File.open(file_name)
97
98 while line = f.gets
99 lines += 1
100 next if line =~ /^\s*$/
101 next if line =~ /^\s*#/
102 codelines += 1
103 end
104 puts "L: #{sprintf("%4d", lines)}, LOC #{sprintf("%4d", codelines)} | #{file_name}"
105
106 total_lines += lines
107 total_codelines += codelines
108
109 lines, codelines = 0, 0
110 end
111
112 puts "Total: Lines #{total_lines}, LOC #{total_codelines}"
113 end
114
115
116 # Publishing ------------------------------------------------------
117
118 desc "Publish the beta gem"
119 task :pgem => [:package] do
120 Rake::SshFilePublisher.new("gems.rubyonrails.org", "/u/sites/gems/gems", "pkg", "#{PKG_FILE_NAME}.gem").upload
121 `ssh gems.rubyonrails.org '/u/sites/gems/gemupdate.sh'`
122 end
123
124 desc "Publish the API documentation"
125 task :pdoc => [:rdoc] do
126 Rake::SshDirPublisher.new("wrath.rubyonrails.org", "public_html/ar", "doc").upload
127 end
128
129 desc "Publish the release files to RubyForge."
130 task :release => [ :package ] do
131 `rubyforge login`
132
133 for ext in %w( gem tgz zip )
134 release_command = "rubyforge add_release #{PKG_NAME} #{PKG_NAME} 'REL #{PKG_VERSION}' pkg/#{PKG_NAME}-#{PKG_VERSION}.#{ext}"
135 puts release_command
136 system(release_command)
137 end
138 end