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
37
38
39
40
41
|
#!/usr/bin/lua
local args = require "pl.lapp" [[
Generates activity chart
-f (string default 'ansi') Output format of the chart
-y (optional number) Generate yearly chart for selected year
-A... (optional string) Author e-mail addresses to include in chart
-C... (optional string) Committer e-mail addresses to include in chart
-B... (optional string) Author or committer e-mail addresses to include
<repos...> (optional string) Paths to repositories with activity
By default, tool will generate a rolling chart for selected repositories. If no
repositories were selected, current working directory will be tried.
]]
local generators = require "activity.generators"
local git = require "activity.git"
local tablex = require "pl.tablex"
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 or "rolling"
if #args.repos < 1 then
table.insert(args.repos, ".")
end
local by_both = tablex.makeset(args.B)
local by_author = git.maybe_filter("author", tablex.union(tablex.makeset(args.A), by_both))
local by_committer = git.maybe_filter("committer", tablex.union(tablex.makeset(args.C), by_both))
local filter
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
local errors, lookup = git.lookup(args.repos, filter)
io.write(generators.generate_table(maybe_year, lookup, maybe_format))
if errors then
os.exit(1)
end
|