Tennis - stylish tables in your terminal (0.4)

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