MxW_Addon/Libraries/oUF/utils/changelog

85 lines
1.6 KiB
Plaintext
Raw Permalink Normal View History

2018-01-05 06:40:15 -05:00
#!/usr/bin/env lua
local tags = {}
do
for tag in io.popen('git tag'):lines() do
local split = tag:gmatch('[^.]+')
local release, api, bugfix = split(), split(), split() or 0
table.insert(
tags,
{
string = tag,
release = release,
api = api,
bugfix = bugfix,
}
)
end
table.sort(tags, function(a,b)
a = a.release * 1e4 + a.api * 100 + a.bugfix
b = b.release * 1e4 + b.api * 100 + b.bugfix
return a > b
end)
end
local generateLog = function(prevTag, currentTag)
local ti = table.insert
local sf = string.format
local out = {}
ti(out, sf('[b]Changes in %s:[/b]', currentTag))
ti(out, '[list]')
for line in io.popen(sf('git shortlog %s..%s', prevTag, currentTag)):lines() do
if(line:sub(1, 6) == ' ') then
local offset = line:match('() ', 7)
if(offset) then
line = line:sub(7, offset - 1)
else
line = line:sub(7)
end
ti(out, sf(' [*] %s', line))
elseif(#line == 0) then
ti(out, ' [/list]')
else
ti(out, sf(' [*][i]%s[/i]', line))
ti(out, ' [list=1]')
end
end
ti(out, '[/list]')
local p = assert(io.popen(sf('git diff --shortstat %s..%s', prevTag, currentTag)))
local stat = p:read'*a'
p:close()
ti(out, sf('[indent]%s[/indent]', stat:sub(2, -2)))
return table.concat(out, '\n')
end
local stop
local to = ...
if(to) then
for i=1, #tags do
if(tags[i].string == to) then
stop = i + 1
end
end
if(not stop) then stop = #tags end
else
stop = #tags
end
for i=2, stop do
local current, prev = tags[i -1], tags[i]
print(generateLog(prev.string, current.string))
end
-- vim: set filetype=lua :