class RakeTasks::Release

Public Class Methods

new() click to toggle source
# File lib/rake_tasks/release.rb, line 25
def initialize
  require 'io/console'
end

Public Instance Methods

full_release() click to toggle source
# File lib/rake_tasks/release.rb, line 29
def full_release
  release

  puts `git rm gemfiles/*.lock`

  Rake::Task[:default].invoke

  `git add gemfiles`
  `git add checksum`
  `git add Gemfile`
  `git add Gemfile.lock`
  `git add *.gemspec`

  puts `git commit -m "Version #{@version}"`
  puts `git tag v#{@version}`
end
release() click to toggle source
# File lib/rake_tasks/release.rb, line 46
def release
  dirty_check

  @version = get_version
  raise_invalid_version if @version.to_s.strip.empty?

  update_version @version
  puts `bundle check`

  puts `gem build #{Gem.gem_spec_file}`
  Checksum.checksums

  puts "#{@version} is ready for release!"
end

Private Instance Methods

dirty_check() click to toggle source
# File lib/rake_tasks/release.rb, line 101
def dirty_check
  return if Dir['*.gem'].empty?
  message = "One or more gems exist in the root folder.\n"
  message += 'Please clean up the folder and try again.'
  raise message
end
get_version() click to toggle source
# File lib/rake_tasks/release.rb, line 68
def get_version
  version = Gem.gem_version
  version.scrub!
  return version.to_s if is_version?(version)

  version.next_revision!
  return version.to_s if is_version?(version)

  version.next_minor_version!
  return version.to_s if is_version?(version)

  version.next_major_version!
  return version.to_s if is_version?(version)

  version = user_version
end
is_version?(version) click to toggle source
# File lib/rake_tasks/release.rb, line 85
def is_version?(version)
  prompt = "Is the version to release `#{version}`?"
  answer = Prompt.new(prompt, 'n').get_value
  answer == 'y'
end
raise_invalid_version() click to toggle source
# File lib/rake_tasks/release.rb, line 96
def raise_invalid_version
  message = 'No version was specified.'
  raise ArgumentError.new(message)
end
update_version(new_version) click to toggle source
# File lib/rake_tasks/release.rb, line 63
def update_version(new_version)
  return if new_version == Gem.version_number
  Gem.version! new_version
end
user_version() click to toggle source
# File lib/rake_tasks/release.rb, line 91
def user_version
  prompt = 'Please enter a new version number to use'
  Prompt.new(prompt).get_value
end