module Shifter module Git extend self def tag!(env, tag = nil) name = "#{env}-#{Time.now.to_i}" `git tag #{name} #{tag} && git push --tags` end def retag!(env, tag) Git.tag! env, tag end def tags(env) `git fetch --tags` `git tag | grep ^#{env}-`.lines end def last_tag(env) tags(env).max end def penultimate_tag(env) tags(env).sort.tap(&:pop).last end def tag_sha(tag) `git show #{tag} --format="%H"`.lines.last end end end