tkyprof-0.0.1: bin/prof2json.hs
module Main where
import Blaze.ByteString.Builder (toByteStringIO)
import Control.Applicative
import Control.Exception (bracket)
import Control.Monad.Trans (liftIO)
import Data.Aeson (toJSON)
import Data.Aeson.Encode (fromValue)
import Data.Enumerator (Iteratee, ($$), run_)
import ProfilingReport (ProfilingReport(..), profilingReportI)
import System.Environment (getArgs)
import System.FilePath (dropExtension)
import System.IO (IOMode(WriteMode), openFile, hClose)
import qualified Data.ByteString as S
import qualified Data.Enumerator.Binary as E
main :: IO ()
main = getArgs >>= mapM_ (run_ . job)
job :: FilePath -> Iteratee S.ByteString IO ()
job f = E.enumFile f $$ iterJob json
where
json = dropExtension f ++ ".json"
iterJob :: FilePath -> Iteratee S.ByteString IO ()
iterJob fpath = do
builder <- fromValue . toJSON . reportCostCentres <$> profilingReportI
liftIO $ bracket (openFile fpath WriteMode)
hClose
(\h -> toByteStringIO (S.hPut h) builder)