packages feed

eventlog2html-0.1.0: main/Main.hs

{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE MultiWayIf #-}
module Main (main) where

import Control.Monad
import Data.Aeson (encodeFile, Value, toJSON)
import System.FilePath
import System.Exit

import Eventlog.Args (args, Args(..), Sort(..))
import Eventlog.Bands (bands)
import qualified Eventlog.Events as E
import qualified Eventlog.HeapProf as H
import Eventlog.HtmlTemplate
import Eventlog.Prune (prune, cmpName, cmpSize, cmpStdDev)
import Eventlog.Total (total)
import Eventlog.Data
import Eventlog.Vega
import Eventlog.VegaTemplate

main :: IO ()
main = do
  a <- args
  when (null (files a)) exitSuccess
  argsToOutput a

argsToOutput :: Args -> IO ()
argsToOutput a =
  if | json a -> doJson a
     | otherwise -> doHtml a

doJson :: Args -> IO ()
doJson a = do
  forM_ (files a) $ \file -> do
    (_, val) <- generateJson file a
    encodeFile (file <.> "json") val

doHtml :: Args -> IO ()
doHtml a = do
  forM_ (files a) $ \file -> do
    (header, data_json) <- generateJson file a
    let html = templateString header data_json a
    let filename2 = file <.> "html"
    writeFile filename2 html
    exitSuccess