Skip to content

Commit 9ae4153

Browse files
committed
Extend options for cs_for_commit
1 parent 7d7902d commit 9ae4153

File tree

1 file changed

+27
-2
lines changed

1 file changed

+27
-2
lines changed

scripts/gitinfo-lua.lua

+27-2
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ local mt = {
5656
local gitinfo = {}
5757
setmetatable(gitinfo, mt)
5858

59+
local luakeys = require('luakeys')()
60+
5961
function api.trim(s)
6062
return s and (s:gsub("^%s*(.-)%s*$", "%1")) or 'nil'
6163
end
@@ -205,10 +207,33 @@ function api:cs_last_commit(csname, format)
205207
return self:cs_commit(csname, '-1', format)
206208
end
207209

208-
function api:cs_for_commit(csname, rev_spec, format)
210+
local parse_commit_opts = luakeys.define({
211+
rev_spec = { pick = 'string', default=api:version()..'...HEAD' },
212+
files = { data_type = 'list' },
213+
cwd = { data_type = 'string' },
214+
flags = {
215+
sub_keys = {
216+
merges = { data_type='boolean', exclusive_group='merges' },
217+
['no-merges'] = { name = 'no-merges', data_type='boolean', exclusive_group='merges' }
218+
}
219+
}
220+
})
221+
local function parse_flags(flags_table)
222+
local t = {}
223+
if flags_table then
224+
for k,v in pairs(flags_table) do
225+
if v then
226+
table.insert(t, k)
227+
end
228+
end
229+
end
230+
return t
231+
end
232+
function api:cs_for_commit(csname, args, format)
209233
if token.is_defined(csname) then
210234
local tok = token.create(csname)
211-
local log, err = self.cmd:log(format, rev_spec)
235+
local opts = parse_commit_opts(args)
236+
local log, err = self.cmd:log(format, opts.rev_spec, parse_flags(opts.flags), opts.cwd, opts['files'])
212237
if log then
213238
for _, commit in ipairs(log) do
214239
tex.print(tok)

0 commit comments

Comments
 (0)