Sha256: 3e96f0fd646cfc2cf40c242856f11e23ee0a82baa481a3c549aca9cdc0431df7
Contents?: true
Size: 1.7 KB
Versions: 3
Compression:
Stored size: 1.7 KB
Contents
module GemPolish class CLI::Versioner def initialize(thor) @thor = thor @version = extract_from_version_file end def extract_from_version_file file_contents.match(regexp) numbers = $1.split('.').map(&:to_i) Hash[%w{ major minor revision}.zip(numbers)] end def to_version(hsh = @version) hsh.values.join('.') end 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 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 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 private def gem_name File.basename(Dir.pwd) end def file_contents File.read(file) end def file "lib/#{gem_name}/version.rb" end def regexp /VERSION = "(.*?)"/ end def insertion(version) %{VERSION = "#{version}"} end def staged_files_present? system('git status --porcelain | grep -o "^\w" >/dev/null') end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
gem_polish-0.0.5 | lib/gem_polish/cli/versioner.rb |
gem_polish-0.0.4 | lib/gem_polish/cli/versioner.rb |
gem_polish-0.0.3 | lib/gem_polish/cli/versioner.rb |