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