Tennis is a cli tool that prints stylish tables in your terminal. You point it at csv, json or even a sqlite file and it renders a nice table. Project is still very young, I pushed out 0.4 earlier today.
This is my first Zig project and I am loving it so far. You may recall my post-mortem post here a few days ago… Still enjoying zig, using 0.15.2 at the moment.
I picked zig because I want tiny binaries and I fell in love with the fast compilation. I am having excellent luck pairing with codex. The LLMs add features very quickly, but it takes a senior engineer to keep it idiomatic and maintainable.
$ tennis --help
Usage: tennis [options...] <file.csv>
also supports stdin, json/jsonl, sqlite, etc.
Popular options:
-n, --row-numbers Turn on row numbers
-t, --title <string> Add a title to the table
--border <border> Table border style (rounded|thin|double|...)
-p, --pager Send output through $PAGER or less
--peek Show csv shape, sample, and handy stats
--zebra Turn on zebra stripes
Sort, filter, etc:
--deselect <headers> De-select comma-separated headers
--select <headers> Select or reorder comma-separated headers
--sort <headers> Sort rows by comma-separated headers
-r, --reverse Reverse rows (helpful for sorting)
--shuffle, --shuf Shuffle rows into random order
--head <int> Show first N rows
--tail <int> Show last N rows
--filter <string> Only show rows that contain this text
Other options:
--color <color> Turn color off and on (on|off|auto)
--delimiter <char> Set CSV delim (can be any char or "tab")
--digits <int> Digits after decimal for float columns
--table <table> Select the db table (for sqlite)
--theme <theme> Select color theme (auto|dark|light)
--vanilla Disable numeric formatting
--width <width> Set table width, or try (min|max)
--completion <shell> Print shell completion (bash|zsh)
--help Get help
--version Show version number and exit
