Updated dependency list and added gemspec.
[arvados.git] / tasks / gem.rake
1 require 'rubygems/package_task'
2
3 namespace :gem do
4   GEM_SPEC = Gem::Specification.new do |s|
5     unless s.respond_to?(:add_development_dependency)
6       puts 'The gem spec requires a newer version of RubyGems.'
7       exit(1)
8     end
9
10     s.name = PKG_NAME
11     s.version = PKG_VERSION
12     s.author = PKG_AUTHOR
13     s.email = PKG_AUTHOR_EMAIL
14     s.summary = PKG_SUMMARY
15     s.description = PKG_DESCRIPTION
16
17     s.files = PKG_FILES.to_a
18     s.executables << 'google-api'
19
20     s.extra_rdoc_files = %w( README.md )
21     s.rdoc_options.concat ['--main',  'README.md']
22
23     # Dependencies used in the main library
24     s.add_runtime_dependency('signet', '~> 0.2.2')
25     s.add_runtime_dependency('addressable', '~> 2.2.2')
26     s.add_runtime_dependency('httpadapter', '~> 1.0.0')
27     s.add_runtime_dependency('json', '>= 1.4.6')
28     s.add_runtime_dependency('extlib', '>= 0.9.15')
29
30     # Dependencies used in the CLI
31     s.add_runtime_dependency('launchy', '>= 2.0.0')
32
33     # Dependencies used in the examples
34     s.add_development_dependency('sinatra', '>= 1.2.0')
35
36     s.add_development_dependency('rake', '>= 0.9.0')
37     s.add_development_dependency('rspec', '~> 1.2.9')
38     s.add_development_dependency('rcov', '>= 0.9.9')
39     s.add_development_dependency('diff-lcs', '>= 1.1.2')
40
41     s.require_path = 'lib'
42
43     s.homepage = PKG_HOMEPAGE
44   end
45
46   Gem::PackageTask.new(GEM_SPEC) do |p|
47     p.gem_spec = GEM_SPEC
48     p.need_tar = true
49     p.need_zip = true
50   end
51
52   desc 'Show information about the gem'
53   task :debug do
54     puts GEM_SPEC.to_ruby
55   end
56
57   desc "Generates .gemspec file"
58   task :gemspec do
59     spec_string = GEM_SPEC.to_ruby
60
61     begin
62       Thread.new { eval("$SAFE = 3\n#{spec_string}", binding) }.join
63     rescue
64       abort "unsafe gemspec: #{$!}"
65     else
66       File.open("#{GEM_SPEC.name}.gemspec", 'w') do |file|
67         file.write spec_string
68       end
69     end
70   end
71
72   desc 'Install the gem'
73   task :install => ['clobber', 'gem:package'] do
74     sh "#{SUDO} gem install --local pkg/#{GEM_SPEC.full_name}"
75   end
76
77   desc 'Uninstall the gem'
78   task :uninstall do
79     installed_list = Gem.source_index.find_name(PKG_NAME)
80     if installed_list &&
81         (installed_list.collect { |s| s.version.to_s}.include?(PKG_VERSION))
82       sh(
83         "#{SUDO} gem uninstall --version '#{PKG_VERSION}' " +
84         "--ignore-dependencies --executables #{PKG_NAME}"
85       )
86     end
87   end
88
89   desc 'Reinstall the gem'
90   task :reinstall => [:uninstall, :install]
91 end
92
93 desc 'Alias to gem:package'
94 task 'gem' => 'gem:package'
95
96 task 'clobber' => ['gem:clobber_package']