commit from backup
This commit is contained in:
84
Libraries/oUF/utils/changelog
Normal file
84
Libraries/oUF/utils/changelog
Normal file
@@ -0,0 +1,84 @@
|
||||
#!/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 :
|
||||
Reference in New Issue
Block a user