packages feed

liquidhaskell-0.8.0.2: scripts/plot-benchmarks/src/Config.hs

{-# LANGUAGE DeriveDataTypeable #-}

module Config where

import System.Console.CmdArgs
import System.Directory

data OutputType =
   Svg
   | Csv
     deriving (Eq, Data, Typeable, Show)

data Config =
   Config { logDir :: FilePath,
            outputDir :: FilePath,
            outputType :: OutputType,
            plotCompare :: [(String, String)],
            plot :: [String]
          } deriving (Eq, Data, Typeable, Show)

pwd :: FilePath
pwd = "."

instance Default Config where
   def = Config { logDir = pwd,
                  outputDir = pwd,
                  outputType = Csv,
                  plotCompare = def,
                  plot = def
                }

config :: Config
config = Config
            { logDir = pwd &= help "The directory that contains the logs",
              outputDir = pwd &= help "The diretory to output graphs to",
              outputType = Csv &= help "The type of output to produce",
              plotCompare = def &= help "Pairs of benchmarks to compare",
              plot = def &= help "Benchmarks to plot"
            }
            &= program "plot-benchmarks"
            &= summary ("plot-benchmarks - Copyright 2016 Regents of"
                        ++ "the University of California.")
            &= details ["Plot LiquidHaskell benchmarks over time"]

getConfig :: IO Config
getConfig = do
   conf <- cmdArgs config
   ld <- makeAbsolute $ logDir conf
   od <- makeAbsolute $ outputDir conf
   return $ conf {logDir = ld, outputDir = od}