git-fmt-0.4.0.0: app/Git/Fmt/Pipes.hs
{-|
Module : Git.Fmt.Pipes
Description : Pipeline for formatting files.
Copyright : (c) Henry J. Wylde, 2015
License : BSD3
Maintainer : public@hjwylde.com
Pipeline for formatting files.
-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TupleSections #-}
module Git.Fmt.Pipes (
-- * Transformers
gitDiff,
) where
import Control.Monad.Except
import Control.Monad.Logger
import Omnifmt.Pipes
import Omnifmt.Process
import Pipes
-- | Prints out the git diff of all ugly files to standard output.
gitDiff :: (MonadIO m, MonadLogger m) => Pipe (Status, FilePath, FilePath) (Status, FilePath, FilePath) m ()
gitDiff = select [Ugly] $ \item@(_, uglyFilePath, prettyFilePath) -> do
(_, stdout, _) <- runProcess "git" ["diff", "--no-index", "--", uglyFilePath, prettyFilePath]
liftIO $ putStr stdout
return item