Yesterday I uploaded ght to Hackage. Its just a bunch of trivial routines for inspecting git repositories. It is in no way useful beyond that.
It uses UI.Command to handle various subcommands and generate documentation:
conrad@slippy:~$ ght Trivial git inspection tools Usage: ght [--version] [--help] command [args] This is a bunch of trivial routines for inspecting git repositories. It is in no way useful beyond that. Reporting: show-prefix Show path from top-level directory of repo show-root Show path to top-level directory of repo Blob management: show Show an object log Show commit logs show-raw Show the raw dump of an object show-pack Show the raw dump of a pack hash-object Compute object ID from a file branch show branches Miscellaneous: help Display help for a specific cmdcommand man Generate Unix man page for specific cmdcommand Please report bugs to <conrad@metadecks.org>
I wrote ght a few months back, and subsequently found gat. Similarly, the motivation for writing ght was mainly to understand git better. Often the best way to understand a new system or language is to implement it in Haskell ;-)