class GemPolish::CLI::Versioner

Public Class Methods

new(thor) click to toggle source
# File lib/gem_polish/cli/versioner.rb, line 3
def initialize(thor)
  @thor = thor
  @version = extract_from_version_file
end

Public Instance Methods

commit_version_bump(message) click to toggle source
# File lib/gem_polish/cli/versioner.rb, line 41
def commit_version_bump(message)
  if staged_files_present?
    raise StandardError.new, "Commit aborted: Staged files present"
  else
    `git add #{file}`
    `git commit -m "#{message}"`
    sha = `git rev-parse --short HEAD`.chomp
    @thor.say_status(:commited, %{#{sha} "#{message}"})
  end
end
extract_from_version_file() click to toggle source
# File lib/gem_polish/cli/versioner.rb, line 8
def extract_from_version_file
  file_contents.match(regexp)
  numbers = $1.split('.').map(&:to_i)
  Hash[%w{ major minor revision}.zip(numbers)]
end
release() click to toggle source
# File lib/gem_polish/cli/versioner.rb, line 52
def release
  `rake release`
  @thor.say_status(:released, '')
end
substitute_version(v) click to toggle source
# File lib/gem_polish/cli/versioner.rb, line 18
def substitute_version(v)
  version = v.kind_of?(String) ? v : to_version(v)
  @thor.gsub_file(file, regexp, insertion(version))
  @thor.say_status(:bumped_version, "#{to_version} => #{version}")
end
to_version(hsh = @version) click to toggle source
# File lib/gem_polish/cli/versioner.rb, line 14
def to_version(hsh = @version)
  hsh.values.join('.')
end
update_version(bumper) click to toggle source
# File lib/gem_polish/cli/versioner.rb, line 24
def update_version(bumper)
  set_back = false
  @version.each_with_object({}) do |(level, number), h|
    nl = if set_back
           0
         else
           if level == bumper
             set_back = true
             number + 1
           else
             number
           end
         end
    h[level] = nl
  end
end

Private Instance Methods

file() click to toggle source
# File lib/gem_polish/cli/versioner.rb, line 67
def file
  "lib/#{gem_name.sub('-', '/')}/version.rb"
end
file_contents() click to toggle source
# File lib/gem_polish/cli/versioner.rb, line 63
def file_contents
  File.read(file)
end
gem_name() click to toggle source
# File lib/gem_polish/cli/versioner.rb, line 59
def gem_name
  File.basename(Dir.pwd)
end
insertion(version) click to toggle source
# File lib/gem_polish/cli/versioner.rb, line 75
def insertion(version)
  %{VERSION = "#{version}"}
end
regexp() click to toggle source
# File lib/gem_polish/cli/versioner.rb, line 71
def regexp
  /VERSION = "(.*?)"/
end
staged_files_present?() click to toggle source
# File lib/gem_polish/cli/versioner.rb, line 79
def staged_files_present?
  system('git status --porcelain | grep -o "^\w" >/dev/null')
end