CLI tool to rank proposals according to Majority Judgment, from an input CSV
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Go to file
Dominique Merle bf55f4fd08
feat: support --version to get the version
3 years ago
.github/workflows fix(ci) here we go again… 3 years ago
cmd feat: support --version to get the version 3 years ago
example docs 3 years ago
formatter feat: offset the legend a little 3 years ago
.gitignore chore(git): ignore windows builds 3 years ago
LICENSE feat: basic cobra boilerplate and usage doc 3 years ago
README.md feat: read from stdin when supplying `-` as filepath 3 years ago
go.mod feat: add an option to sort proposals as well 3 years ago
main.go feat: support --version to get the version 3 years ago

README.md

Majority Judgment CLI tool

WORK IN PROGRESS Although the core mechanics are here and ranking does work, the features described in this README are not all implemented. We're merely doc-driving this tool, and our doc is ambitious.

  • Read from stdin with -
  • Read CSV file
  • --sort
  • --format text
  • --format json
  • --format csv
  • --format yml
  • --format svg
  • --chart

Download

Hand-made builds are provided in the Assets of each Release.

Usage

Say you have a tally CSV like so:

     , reject, poor, fair, good, very good, excellent
Pizza,      3,    2,    1,    4,         4,        2
Chips,      2,    3,    0,    4,         3,        4
Pasta,      4,    5,    1,    4,         0,        2

You can run

./mj example.csv

and get

Output of the command ; merit profiles are drawn in ASCII Art

You probably want to --sort the proposals as well:

./mj example.csv --sort

Output of the command ; the same but with sorted proposals

or use - to read from stdin:

cat example.csv | mj -

You can specify the format:

./mj example.csv --format json > results.json
./mj example.csv --format csv > results.csv
./mj example.csv --format svg > merit.svg

And the kind of chart you want:

./mj example.csv --format svg --chart opinion > opinion.svg

Available charts:

  • merit_linear (default)
  • merit_circular
  • opinion

Install

Copy the binary somewhere in your PATH.

Or don't, and use it from anywhere.

Build

You can also grab the source and build it:

git clone https://github.com/MieuxVoter/majority-judgment-cli

Install golang.

Example:

  • Ubuntu: sudo snap install go --classic

Then go into this project directory and run:

go get
go build -o mj

Build distributables

go build -ldflags "-s -w" -o mj

Yields a mj binary of about 5 Mio.

They say we should not strip go builds.

You can run upx on the binary to reduce its size:

upx mj

For Windows

GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o mj.exe

Packing the Windows executable with upx appears to trigger antivirus software.