rattle-0.2: benchmark/Benchmark/Args.hs
{-# LANGUAGE DeriveDataTypeable #-}
module Benchmark.Args(
Args(..), getArguments,
elemOrNull, orNull,
) where
import System.Console.CmdArgs
data Args = Args
{names :: [String] -- the benchmarks to run
,threads :: [Int] -- which thread numbers to use
,repeat_ :: Maybe Int
,step :: [String] -- which steps to run
,commits :: Maybe Int
,no_stderr :: Bool
,count :: Maybe Int
}
deriving Data
mode :: Mode (CmdArgs Args)
mode = cmdArgsMode $ Args
{names = [] &= args
,threads = [] &= name "j"
,repeat_ = Nothing
,step = []
,commits = Nothing
,no_stderr = False
,count = Nothing
}
getArguments :: IO Args
getArguments = cmdArgsRun mode
elemOrNull :: Eq a => a -> [a] -> Bool
elemOrNull x xs = null xs || x `elem` xs
orNull :: [a] -> [a] -> [a]
orNull xs ys = if null xs then ys else xs