allow saving the bench report to an arbitrary location

This commit is contained in:
fanghr 2022-05-27 01:01:30 +08:00
parent ae91b9157b
commit bbc9953b9a
No known key found for this signature in database
GPG key ID: 0B261157257380F2
3 changed files with 40 additions and 2 deletions

View file

@ -4,6 +4,7 @@ import Bench (specificationTreeToBenchmarks)
import Data.Csv (encodeDefaultOrderedByName)
import Data.Text.Lazy.Encoding (decodeUtf8)
import Data.Text.Lazy.IO as I (writeFile)
import Options (Options (..), parseOptions)
import Prettyprinter (defaultLayoutOptions, layoutPretty, pretty)
import Prettyprinter.Render.String (renderString)
import Spec.AuthorityToken qualified as AuthorityToken
@ -20,7 +21,9 @@ import Prelude
main :: IO ()
main = do
I.writeFile "bench.csv" $
options <- parseOptions
I.writeFile options.output $
(decodeUtf8 . encodeDefaultOrderedByName) res
mapM_ (putStrLn . renderString . layoutPretty defaultLayoutOptions . pretty) res

31
agora-bench/Options.hs Normal file
View file

@ -0,0 +1,31 @@
module Options (Options (..), parseOptions) where
import Options.Applicative ((<**>))
import Options.Applicative qualified as Opt
newtype Options = Options
{ output :: FilePath
}
outputOpt :: Opt.Parser FilePath
outputOpt =
Opt.strOption
( Opt.long "output-path"
<> Opt.short 'o'
<> Opt.metavar "OUTPUT_PATH"
<> Opt.value "./bench.csv"
<> 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"
)

View file

@ -212,13 +212,17 @@ benchmark agora-bench
import: lang, deps
hs-source-dirs: agora-bench
main-is: Main.hs
other-modules: Bench
other-modules:
Bench
Options
type: exitcode-stdio-1.0
build-depends:
, agora
, agora-sample
, agora-spec
, cassava
, optparse-applicative
executable agora-scripts
import: lang, deps, exe-opts