Class: Gemsmith::Rake::Tasks

Inherits:
Object
  • Object
show all
Includes:
Rake::DSL
Defined in:
lib/gemsmith/rake/tasks.rb

Overview

Provides Rake tasks for use in all gems built by this gem.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(gem_spec: Gem::Specification.new(self.class.default_gem_spec), builder: Rake::Builder.new, publisher: Rake::Publisher.new) ⇒ Tasks

Returns a new instance of Tasks.



24
25
26
27
28
29
30
# File 'lib/gemsmith/rake/tasks.rb', line 24

def initialize gem_spec: Gem::Specification.new(self.class.default_gem_spec),
               builder: Rake::Builder.new,
               publisher: Rake::Publisher.new
  @gem_spec = gem_spec
  @builder = builder
  @publisher = publisher
end

Class Method Details

.default_gem_specObject



16
17
18
# File 'lib/gemsmith/rake/tasks.rb', line 16

def self.default_gem_spec
  Dir.glob("#{Dir.pwd}/*.gemspec").first
end

.setupObject



20
21
22
# File 'lib/gemsmith/rake/tasks.rb', line 20

def self.setup
  new.install
end

Instance Method Details

#installObject



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
# File 'lib/gemsmith/rake/tasks.rb', line 32

def install
  desc "Update README (table of contents)"
  task :doc do
    builder.doc
  end

  desc "Clean gem artifacts"
  task :clean do
    builder.clean
  end

  task :validate do
    builder.validate
  end

  desc "Build #{gem_spec.package_file_name} package"
  task build: [:clean, :doc, :validate] do
    builder.build gem_spec
  end

  desc "Install #{gem_spec.package_file_name} package"
  task install: :build do
    builder.install gem_spec
  end

  desc "Build, tag as #{gem_spec.version_label} (#{signed_label}), " \
       "and push #{gem_spec.package_file_name} to RubyGems"
  task publish: :build do
    publisher.publish
  end
end