30 lines
768 B
Ruby
30 lines
768 B
Ruby
desc "generate a release note from the important commits"
|
|
task "release_note:generate", :tag do |t, args|
|
|
tag = args[:tag] || `git describe --tags --abbrev=0`.strip
|
|
|
|
bug_fixes = Set.new
|
|
new_features = Set.new
|
|
ux_changes = Set.new
|
|
|
|
`git log --pretty=format:%s #{tag}..HEAD`.each_line do |line|
|
|
if line =~ /^(FIX|BUG|BUGFIX):/i
|
|
bug_fixes << better(line)
|
|
elsif line =~ /^FEATURE:/i
|
|
new_features << better(line)
|
|
elsif line =~ /^UX:/i
|
|
ux_changes << better(line)
|
|
end
|
|
end
|
|
|
|
puts "NEW FEATURES:", new_features.to_a, ""
|
|
puts "BUG FIXES:", bug_fixes.to_a, ""
|
|
puts "UX CHANGES:", ux_changes.to_a, ""
|
|
|
|
end
|
|
|
|
def better(line)
|
|
line = line.gsub(/^(FIX|BUG|BUGFIX|FEATURE|UX):/i, "").strip
|
|
line[0] = line[0].capitalize
|
|
line
|
|
end
|