packages feed

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