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