Class: Gemsmith::Rake::Release

Inherits:
Object
  • Object
show all
Defined in:
lib/gemsmith/rake/release.rb

Overview

Provides gem release functionality. Meant to be wrapped in Rake tasks.

Instance Method Summary collapse

Constructor Details

#initialize(gem_spec_path = Dir.glob("#{Dir.pwd}/*.gemspec").first, bundler: Bundler, tagger: Milestoner::Tagger.new, shell: Bundler::UI::Shell.new) ⇒ Release

Returns a new instance of Release.



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/gemsmith/rake/release.rb', line 7

def initialize gem_spec_path = Dir.glob("#{Dir.pwd}/*.gemspec").first,
               bundler: Bundler,
               tagger: Milestoner::Tagger.new,
               shell: Bundler::UI::Shell.new

  @gem_spec_path = gem_spec_path
  @tagger = tagger
  @shell = shell
  @gem_spec = bundler.load_gemspec gem_spec_path.to_s
rescue Errno::ENOENT
  @shell.error "Invalid gemspec file path: #{@gem_spec_path}."
end

Instance Method Details

#gem_file_nameObject



28
29
30
# File 'lib/gemsmith/rake/release.rb', line 28

def gem_file_name
  "#{gem_spec.name}-#{version_number}.gem"
end

#publishObject



32
33
34
35
36
# File 'lib/gemsmith/rake/release.rb', line 32

def publish
  tagger.create version_number, sign: true
rescue Milestoner::Errors::Base => error
  shell.error error.message
end

#version_labelObject



24
25
26
# File 'lib/gemsmith/rake/release.rb', line 24

def version_label
  "v#{version_number}"
end

#version_numberObject



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

def version_number
  gem_spec.version.version
end