Bunyan.hs 749 B

123456789101112131415161718192021222324252627
  1. module Bunyan where
  2. import Data.Monoid ((<>))
  3. import qualified Data.Text as T
  4. import qualified Data.Text.IO as T
  5. import qualified System.Process as Sys
  6. import Bunyan.Log
  7. import Bunyan.App
  8. import Bunyan.Pretty
  9. data Config = Config
  10. { cfgEditorCommand :: String
  11. , cfgGitRepo :: FilePath
  12. } deriving (Eq, Show)
  13. main :: Config -> IO ()
  14. main cfg = do
  15. let pr = (Sys.proc "git" ["log"]) { Sys.cwd = Just (cfgGitRepo cfg)
  16. , Sys.std_out = Sys.CreatePipe
  17. }
  18. rs <- Sys.withCreateProcess pr $ \ _ (Just stdin) _ ph -> do
  19. T.hGetContents stdin
  20. let entries = parseLogEntry rs
  21. cats <- runApp entries
  22. T.putStrLn (pretty cats)