Skip to content

Instantly share code, notes, and snippets.

@hayduke19us
Created June 9, 2016 22:11
Show Gist options
  • Save hayduke19us/73ed7fc57e91d2ace2212ae50a1197f8 to your computer and use it in GitHub Desktop.
Save hayduke19us/73ed7fc57e91d2ace2212ae50a1197f8 to your computer and use it in GitHub Desktop.
require 'rugged'
module TaskHelpers
class SCM
attr_reader :repo, :remote, :year, :revision, :release, :release_cutoff
def initialize(env={})
@repo = Rugged::Repository.new Rails.root.to_s
@remote = env.fetch('REMOTE', 'origin')
@year = env.fetch('YEAR', Date.today.year)
@revision = env.fetch('REVISION', 'master')
@release = env['RELEASE']
@release_cutoff = -3
end
def branches
repo.branches.each_name(:remote).select(&method(:match_prefix?)).sort
end
def next_release
release || branches.last[prefix.length..-1].to_i + 1
end
def next_release_branch
"releases/#{year}/#{next_release}"
end
def prefix
"#{remote}/releases/#{year}/"
end
def stale_releases
branches[0..release_cutoff]
end
def match_prefix?(branch)
branch =~ /\A#{prefix}/
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment