add_commit_line()
click to toggle source
def add_commit_line
@current_line.gsub!(/^\[([^\]]*)\] /, '')
tag = $1 || 'misc'
@changes[tag] ||= []
@changes[tag] << "#{@current_line} thanks #{@committer}"
end
add_commits_to_changelog()
click to toggle source
def add_commits_to_changelog
@changes.keys.sort.each do |tag|
@changelog << "#### [#{tag}]"
@changes[tag].each do |commit|
@changelog << "* #{commit}"
end
@changelog << blank_line
end
end
add_committer()
click to toggle source
def add_committer
@committers[@committer] = 0
end
add_period_if_necessary()
click to toggle source
def add_period_if_necessary
@current_line << "." unless @current_line[-1] == '.'
end
blank_line()
click to toggle source
collaborators()
click to toggle source
def collaborators
response = Excon.get('https://api.github.com/repos/fog/fog/collaborators', :headers => {'User-Agent' => 'geemus'})
data = Fog::JSON.decode(response.body)
data.length
end
committer_line?()
click to toggle source
def committer_line?
committer_match != nil
end
committer_match()
click to toggle source
def committer_match
@current_line.match /([\w\s]+)\s+\(\d+\)/
end
committers_sorted_by_commits()
click to toggle source
def committers_sorted_by_commits
committer_pairs = @committers.to_a.sort {|x,y| y[1] <=> x[1]}
committer_pairs.reject! {|pair| pair.last < 1 }
committer_pairs.map {|pair| pair.first }
end
downloads()
click to toggle source
def downloads
repsonse = Excon.get('https://rubygems.org/api/v1/gems/fog.json')
data = Fog::JSON.decode(repsonse.body)
data['downloads']
end
forks()
click to toggle source
def forks
repo_metadata['forks']
end
increment_commits()
click to toggle source
def increment_commits
@committers[@committer] += 1
end
last_release_sha()
click to toggle source
def last_release_sha
%xcat changelog.md | head -2`.split(' ').last
end
mvp()
click to toggle source
def mvp
return @mvp if @mvp
committers_sorted_by_commits.each do |committer|
unless former_mvp?(committer)
@mvp = committer
return @mvp
end
end
nil
end
open_issues()
click to toggle source
def open_issues
repo_metadata['open_issues']
end
process_commits()
click to toggle source
def process_commits
shortlog = %xgit shortlog #{last_release_sha}..HEAD`
@changes = {}
@committers = {}
@committer = nil
shortlog.split("\n").each do |line|
@current_line = line
if committer_line?
@committer = committer_match[1]
add_committer
elsif !release_merge_line?
add_period_if_necessary
@current_line.lstrip!
add_commit_line
increment_commits
end
end
end
release_merge_line?()
click to toggle source
def release_merge_line?
@current_line =~ /^\s*((Merge.*)|(Release.*))?$/
end
save_changelog()
click to toggle source
def save_changelog
old_changelog = File.read('CHANGELOG.md')
File.open('CHANGELOG.md', 'w') do |file|
file.write(@changelog.join("\n"))
file.write("\n\n")
file.write(old_changelog)
end
end
sha()
click to toggle source
def sha
%xgit log | head -1`.split(' ').last
end
timestamp()
click to toggle source
def timestamp
@time ||= Time.now.utc.strftime('%m/%d/%Y')
end
watchers()
click to toggle source
def watchers
repo_metadata['watchers']
end