root/lang/ruby/gweb_search/Rakefile @ 39120

Revision 28650, 3.7 kB (checked in by valda, 4 years ago)

テストを作成, リファクタリング, gemspec ファイルの追加

Line 
1require 'rubygems'
2require 'rake'
3require 'rake/clean'
4require 'rake/testtask'
5require 'rake/packagetask'
6require 'rake/gempackagetask'
7require 'rake/rdoctask'
8require 'rake/contrib/rubyforgepublisher'
9require 'rake/contrib/sshpublisher'
10require 'fileutils'
11require 'lib/google/gweb_search'
12include FileUtils
13
14NAME              = "gweb_search"
15AUTHOR            = "YAMAGUCHI Seiji"
16EMAIL             = "valda@underscore.jp"
17DESCRIPTION       = "Thin wrapper for Google AJAX Search API."
18RUBYFORGE_PROJECT = "gweb_search"
19HOMEPATH          = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
20BIN_FILES         = %w(  )
21
22VERS              = Google::GwebSearch::VERSION
23REV = File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
24CLEAN.include ['**/.*.sw?', '*.gem', '.config']
25RDOC_OPTS = [
26        '--title', "#{NAME} documentation",
27        "--charset", "utf-8",
28        "--opname", "index.html",
29        "--line-numbers",
30        "--main", "README",
31        "--inline-source",
32]
33
34task :default => [:test]
35task :package => [:clean]
36
37Rake::TestTask.new("test") do |t|
38        t.libs   << "test"
39        t.pattern = "test/**/*_test.rb"
40        t.verbose = true
41end
42
43spec = Gem::Specification.new do |s|
44        s.name              = NAME
45        s.version           = VERS
46        s.platform          = Gem::Platform::RUBY
47        s.has_rdoc          = true
48        s.extra_rdoc_files  = ["README", "ChangeLog"]
49        s.rdoc_options     += RDOC_OPTS + ['--exclude', '^(examples|extras)/']
50        s.summary           = DESCRIPTION
51        s.description       = DESCRIPTION
52        s.author            = AUTHOR
53        s.email             = EMAIL
54        s.homepage          = HOMEPATH
55        s.executables       = BIN_FILES
56        s.rubyforge_project = RUBYFORGE_PROJECT
57        s.bindir            = "bin"
58        s.require_path      = "lib"
59        #s.autorequire       = ""
60        s.test_files        = Dir["test/*_test.rb"]
61
62        s.add_dependency('json', '>=1.1.3')
63        #s.required_ruby_version = '>= 1.8.2'
64
65        s.files = %w(README ChangeLog Rakefile) +
66                Dir.glob("{bin,doc,test,lib,templates,generator,extras,website,script}/**/*") +
67                Dir.glob("ext/**/*.{h,c,rb}") +
68                Dir.glob("examples/**/*.rb") +
69                Dir.glob("tools/*.rb") +
70                Dir.glob("rails/*.rb")
71
72        s.extensions = FileList["ext/**/extconf.rb"].to_a
73end
74
75Rake::GemPackageTask.new(spec) do |p|
76        p.need_tar = true
77        p.gem_spec = spec
78end
79
80task :install do
81        name = "#{NAME}-#{VERS}.gem"
82        sh %{rake package}
83        sh %{sudo gem install pkg/#{name}}
84end
85
86task :uninstall => [:clean] do
87        sh %{sudo gem uninstall #{NAME}}
88end
89
90
91Rake::RDocTask.new do |rdoc|
92        rdoc.rdoc_dir = 'html'
93        rdoc.options += RDOC_OPTS
94        rdoc.template = "resh"
95        #rdoc.template = "#{ENV['template']}.rb" if ENV['template']
96        if ENV['DOC_FILES']
97                rdoc.rdoc_files.include(ENV['DOC_FILES'].split(/,\s*/))
98        else
99                rdoc.rdoc_files.include('README', 'ChangeLog')
100                rdoc.rdoc_files.include('lib/**/*.rb')
101                rdoc.rdoc_files.include('ext/**/*.c')
102        end
103end
104
105desc "Publish to RubyForge"
106task :rubyforge => [:rdoc, :package] do
107        require 'rubyforge'
108        Rake::RubyForgePublisher.new(RUBYFORGE_PROJECT, 'yamaguchi').upload
109end
110
111desc 'Package and upload the release to rubyforge.'
112task :release => [:clean, :package] do |t|
113        v = ENV["VERSION"] or abort "Must supply VERSION=x.y.z"
114        abort "Versions don't match #{v} vs #{VERS}" unless v == VERS
115        pkg = "pkg/#{NAME}-#{VERS}"
116
117        require 'rubyforge'
118        rf = RubyForge.new.configure
119        puts "Logging in"
120        rf.login
121
122        c = rf.userconfig
123#       c["release_notes"] = description if description
124#       c["release_changes"] = changes if changes
125        c["preformatted"] = true
126
127        files = [
128                "#{pkg}.tgz",
129                "#{pkg}.gem"
130        ].compact
131
132        puts "Releasing #{NAME} v. #{VERS}"
133        rf.add_release RUBYFORGE_PROJECT, NAME, VERS, *files
134end
135
136desc 'Show information about the gem.'
137task :debug_gem do
138        puts spec.to_ruby
139end
140
141desc 'Update gem spec'
142task :gemspec do
143  open("#{NAME}.gemspec", 'w').write spec.to_ruby
144end
Note: See TracBrowser for help on using the browser.