Class: RStack::Gem

Inherits:
Object
  • Object
show all
Defined in:
lib/rstack/tasks/gem.rb

Class Method Summary collapse

Class Method Details

.define_tasks(configuration) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/rstack/tasks/gem.rb', line 3

def self.define_tasks(configuration)
  spec = ::Gem::Specification.new do |s|
    s.name      = configuration.gem_name
    s.version   = configuration.version
    s.platform  = configuration.platform
    s.summary   = configuration.summary
    s.author    = configuration.author
    s.email     = configuration.email
    s.homepage  = configuration.url

    unless configuration.gem_name == 'rstack'
      s.add_dependency "rstack", ">= #{RStack::Version::STRING}"
    end
    
    s.add_dependency 'rake',          '>= 0.8.1'
    s.add_dependency 'rcov',          '>= 0.8.0'
    s.add_dependency 'diff-lcs',      '>= 1.1.2'        
    s.add_dependency 'rspec',         '>= 1.1.3'
    s.add_dependency 'extlib'

    configuration.dependencies.each do |dependency, version|
      s.add_dependency dependency, version
    end
          
    s.files             = configuration.files
    s.executables       = configuration.executables
    s.require_path      = configuration.require_path
    s.has_rdoc          = configuration.has_rdoc
    #s.extra_rdoc_files  = ["README.txt"]
  end
  ::Rake::GemPackageTask.new(spec) { |p| p.gem_spec = spec }
        
  namespace :gem do
    desc "Repackage gem, uninstall and install again (does not use sudo)."
    task :refresh => :repackage do
      system "gem uninstall #{configuration.gem_name} -v #{configuration.version}"
      system "gem install pkg/#{configuration.gem_name}-#{configuration.version}.gem"
    end
    
    desc "Create a gemspec file"
    task :spec do
      File.open("#{configuration.gem_name}.gemspec", "w") do |file|
        file.puts spec.to_ruby
      end
    end
  end
  
end