1e310dd91SPatrick Williams# tof-voters
2e310dd91SPatrick Williams
3e72e5669SPatrick WilliamsThis tool is used for determining who is qualified for voting in a TOF election,
4e310dd91SPatrick Williamsbased on the
5e310dd91SPatrick Williams[requirements](https://github.com/openbmc/docs/blob/master/tof/membership-and-voting.md#metrics)
6e72e5669SPatrick Williamsset out by the TOF.
7e72e5669SPatrick Williams
8e72e5669SPatrick WilliamsThe tool will query Gerrit for commits and reviews, process them, and generate a
9e72e5669SPatrick Williamsreport of qualified individuals.
10e72e5669SPatrick Williams
11e72e5669SPatrick WilliamsThe typical use of the tool is something like this:
12e310dd91SPatrick Williams
13e72e5669SPatrick Williams```sh
14e72e5669SPatrick Williams./voters dump-gerrit --after=2021-06-30
15e72e5669SPatrick Williams./voters analyze-commits --before "2022-01-01" --after "2021-06-30"
16e72e5669SPatrick Williams./voters analyze-reviews --before "2022-01-01" --after "2021-06-30"
17e72e5669SPatrick Williams./voters report
18*ed5643f6SAndrew Jefferyjq '[ .[] | select(.qualified) | {(.name): .points} ] | add | to_entries | sort_by(.value) | reverse | from_entries' data/report.json
19e72e5669SPatrick Williams```
20e72e5669SPatrick Williams
21e72e5669SPatrick WilliamsThe above will yield a JSON dictionary of "users:points" where 'qualified' is
22e72e5669SPatrick Williamsset in the users' dictionary from `report.json` like:
23e310dd91SPatrick Williams
24e72e5669SPatrick Williams```json
25e72e5669SPatrick Williams{
26*ed5643f6SAndrew Jeffery    "User Name 2": 19,
27*ed5643f6SAndrew Jeffery    "User Name 1": 16,
28e72e5669SPatrick Williams    ...
29e72e5669SPatrick Williams}
30e72e5669SPatrick Williams```
31