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



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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/rstack/tasks/gem.rb', line 5

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_development_dependency "rstack", ">= #{RStack::Version::STRING}"
    end
    
    s.add_dependency             'rake',       '>= 0.8.1'
    s.add_development_dependency 'rcov',       '>= 0.8.0'
    s.add_development_dependency 'diff-lcs',   '>= 1.1.2'        
    s.add_development_dependency 'rspec',      '>= 1.1.3'

    configuration.dependencies.each do |dependency, version|
      s.add_dependency dependency, version
    end

    configuration.runtime_dependencies.each do |dependency, version|
      s.add_runtime_dependency dependency, version
    end

    configuration.development_dependencies.each do |dependency, version|
      s.add_development_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 }

  desc "Install dependencies for development."
  task :setup do
    gems = ::Gem::SourceIndex.from_installed_gems
    spec.dependencies.each do |dep|
      if gems.find_name(dep.name, dep.version_requirements).empty?
        puts "Installing dependency: #{dep}"
        system %Q|gem install #{dep.name} -v "#{dep.version_requirements}"  --development|
      end
    end
  end

  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