#!/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 (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