require “grit”

desc “Outputs the ChangeLog of the current release (latest release on rubygems.org)” task :changelog do

repo = Grit::Repo.new('.')

currentMerge = repo.log('origin/master', nil, :merges => true)[0].id
lastMerge = repo.log('origin/master', nil, :merges => true)[1].id
changes = repo.commits_between(lastMerge, currentMerge)

tags = repo.tags

if !changes.nil?
    changes.reverse!

    tags.each do |tag|
        if tag.commit.sha.eql?(changes[0].id)
            puts "=> Current version: \033[0;31m#{tag.name}\033[0m (tagged)"
        end
    end

    changes.each do |commit|
        puts "\033[0;33m#{commit.id[0,7]}\033[0m - #{commit.date} - \033[0;32m#{commit.message}\033[0m"
    end
end

end