mirror of
https://github.com/WinampDesktop/winamp.git
synced 2024-12-12 01:21:00 -05:00
70 lines
1.3 KiB
Lua
70 lines
1.3 KiB
Lua
|
---
|
||
|
-- Output a list of merged PRs since last release in the CHANGES.txt format.
|
||
|
---
|
||
|
|
||
|
local usage = "Usage: premake5 --file=scripts/changes.lua --since=<rev> changes"
|
||
|
|
||
|
local sinceRev = _OPTIONS["since"]
|
||
|
|
||
|
if not sinceRev then
|
||
|
print(usage)
|
||
|
error("Missing `--since`", 0)
|
||
|
end
|
||
|
|
||
|
|
||
|
local function parsePullRequestId(line)
|
||
|
return line:match("#%d+%s")
|
||
|
end
|
||
|
|
||
|
local function parseTitle(line)
|
||
|
return line:match("||(.+)")
|
||
|
end
|
||
|
|
||
|
local function parseAuthor(line)
|
||
|
return line:match("%s([^%s]-)/")
|
||
|
end
|
||
|
|
||
|
local function parseLog(line)
|
||
|
local pr = parsePullRequestId(line)
|
||
|
local title = parseTitle(line)
|
||
|
local author = parseAuthor(line)
|
||
|
return string.format("* PR %s %s (@%s)", pr, title, author)
|
||
|
end
|
||
|
|
||
|
|
||
|
local function gatherChanges()
|
||
|
local cmd = string.format('git log HEAD "^%s" --merges --first-parent --format="%%s||%%b"', _OPTIONS["since"])
|
||
|
local output = os.outputof(cmd)
|
||
|
|
||
|
changes = {}
|
||
|
|
||
|
for line in output:gmatch("[^\r\n]+") do
|
||
|
table.insert(changes, parseLog(line))
|
||
|
end
|
||
|
|
||
|
return changes
|
||
|
end
|
||
|
|
||
|
|
||
|
local function generateChanges()
|
||
|
local changes = gatherChanges()
|
||
|
table.sort(changes)
|
||
|
for i = 1, #changes do
|
||
|
print(changes[i])
|
||
|
end
|
||
|
end
|
||
|
|
||
|
|
||
|
newaction {
|
||
|
trigger = "changes",
|
||
|
description = "Generate list of git merges in CHANGES.txt format",
|
||
|
execute = generateChanges
|
||
|
}
|
||
|
|
||
|
newoption {
|
||
|
trigger = "since",
|
||
|
value = "revision",
|
||
|
description = "Log merges since this revision"
|
||
|
}
|
||
|
|