summaryrefslogtreecommitdiff
path: root/generate.lua
blob: bc46585bc3c91587699b44ae663b8b94ccdee32b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/lua
local args = require "pl.lapp" [[
Generates activity chart
	-f  (string default 'ansi')    Output format of the chart
	-y  (optional number)          Year of the chart
	-R                             Generate rolling chart
	-A... (optional string)        Author e-mail addresses to include in chart
	-C... (optional string)        Committer e-mail addresses to include in chart
	<repos...>  (optional string)  Paths to repositories with activity
]]
local generators = require "activity.generators"
local git = require "activity.git"
local ok, maybe_format = pcall(require, "activity.formats." .. args.f)
if not ok then
	io.stderr:write(("could not find specified format: %q\n\n"):format(args.f))
	io.stderr:write(maybe_format, "\n")
	os.exit(1)
end
local maybe_year = args.y
if args.R then
	maybe_year = "rolling"
end
local filter, by_author, by_committer
if #args.A > 0 then
	by_author = git.any_value_filter("author", args.A)
end
if #args.C > 0 then
	by_committer = git.any_value_filter("committer", args.C)
end
if by_committer and by_author then
	function filter (entry)
		return by_author(entry) or by_committer(entry)
	end
end
filter = filter or by_author or by_committer
io.write(generators.generate_table(maybe_year, git.lookup(args.repos, filter), maybe_format))