Class: Simp::Rake::Rubygem

Inherits:
Rake::TaskLib
  • Object
show all
Defined in:
lib/simp/rake/rubygem.rb

Instance Method Summary collapse

Constructor Details

#initialize(package, rakefile_dir = File.pwd) ⇒ Rubygem

Returns a new instance of Rubygem.



4
5
6
7
8
# File 'lib/simp/rake/rubygem.rb', line 4

def initialize( package, rakefile_dir = File.pwd )
  @package      = package
  @rakefile_dir = rakefile_dir
  define
end

Instance Method Details

#defineObject



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
# File 'lib/simp/rake/rubygem.rb', line 24

def define
  define_clean_paths

  desc 'Ensure gemspec-safe permissions on all files'
  task :chmod do
    gemspec = File.expand_path( "#{@package}.gemspec", @rakefile_dir ).strip
    spec = Gem::Specification::load( gemspec )
    spec.files.each do |file|
      FileUtils.chmod 'go=r', file
    end
  end

  namespace :pkg do
    desc "build rubygem package for #{@package}"
    task :gem => :chmod do
      Dir.chdir @rakefile_dir
      Dir['*.gemspec'].each do |spec_file|
        cmd = %Q{SIMP_RPM_BUILD=#{ENV.fetch('SIMP_RPM_BUILD',1)} bundle exec gem build "#{spec_file}"}
        sh cmd
        FileUtils.mkdir_p 'dist'
        FileUtils.mv Dir.glob("#{@package}*.gem"), 'dist/'
      end
    end

    desc "build and install rubygem package for #{@package}"
    task :install_gem => [:clean, :gem] do
      Dir.chdir @rakefile_dir
      Dir.glob("dist/#{@package}*.gem") do |pkg|
        sh %Q{bundle exec gem install #{pkg}}
      end
    end
  end

  desc "Run acceptance tests"
  RSpec::Core::RakeTask.new(:acceptance) do |t|
    t.pattern = 'spec/acceptance'
  end

  desc "Run spec tests"
  RSpec::Core::RakeTask.new(:spec) do |t|
      t.rspec_opts = ['--color']
      t.pattern = 'spec/lib/simp/**/*_spec.rb'
  end
end

#define_clean_pathsObject



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/simp/rake/rubygem.rb', line 10

def define_clean_paths
  CLEAN.include "#{@package}-*.gem"
  CLEAN.include 'pkg'
  CLEAN.include 'dist'
  CLEAN.include 'spec/acceptance/files/testpackage/dist'
  Find.find( @rakefile_dir ) do |path|
    if File.directory? path
      CLEAN.include path if File.basename(path) == 'tmp'
    else
      Find.prune
    end
  end
end