agora/agora-bench/Options.hs
2022-08-07 21:39:07 +08:00

32 lines
775 B
Haskell

module Options (Options (..), parseOptions) where
import Control.Applicative (optional)
import Options.Applicative ((<**>))
import Options.Applicative qualified as Opt
newtype Options = Options
{ output :: Maybe FilePath
}
outputOpt :: Opt.Parser (Maybe FilePath)
outputOpt =
optional $
Opt.strOption
( Opt.long "output-path"
<> Opt.short 'o'
<> Opt.metavar "OUTPUT_PATH"
<> Opt.help "The path of the bench report file."
)
benchOpt :: Opt.Parser Options
benchOpt = Options <$> outputOpt
parseOptions :: IO Options
parseOptions = Opt.execParser p
where
p =
Opt.info
(benchOpt <**> Opt.helper)
( Opt.fullDesc
<> Opt.progDesc "Generate benchmark report of agora scripts"
)