59 lines
1.9 KiB
Haskell
59 lines
1.9 KiB
Haskell
module Main (main) where
|
|
|
|
import Bench (specificationTreeToBenchmarks)
|
|
import Data.Csv (EncodeOptions (encUseCrLf), defaultEncodeOptions, encodeDefaultOrderedByNameWith)
|
|
import Data.Text.Lazy.Encoding (decodeUtf8)
|
|
import Data.Text.Lazy.IO as I (putStr, writeFile)
|
|
import Options (Options (..), parseOptions)
|
|
import Prettyprinter (defaultLayoutOptions, layoutPretty, pretty)
|
|
import Prettyprinter.Render.Text (renderLazy)
|
|
import Spec.AuthorityToken qualified as AuthorityToken
|
|
import Spec.Effect.GovernorMutation qualified as GovernorMutation
|
|
import Spec.Effect.TreasuryWithdrawal qualified as TreasuryWithdrawal
|
|
import Spec.Governor qualified as Governor
|
|
import Spec.Proposal qualified as Proposal
|
|
import Spec.Stake qualified as Stake
|
|
import Spec.Treasury qualified as Treasury
|
|
import System.IO (hIsTerminalDevice, stdout)
|
|
import Test.Specification (group)
|
|
import Prelude
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
main :: IO ()
|
|
main = do
|
|
options <- parseOptions
|
|
isTTY <- hIsTerminalDevice stdout
|
|
|
|
mapM_ (`I.writeFile` csv) options.output
|
|
|
|
I.putStr $
|
|
if isTTY
|
|
then prettified
|
|
else csv
|
|
where
|
|
encodeOptions =
|
|
defaultEncodeOptions
|
|
{ encUseCrLf = False
|
|
}
|
|
|
|
res =
|
|
specificationTreeToBenchmarks $
|
|
group
|
|
"Agora"
|
|
[ group
|
|
"Effects"
|
|
[ group "Treasury Withdrawal Effect" TreasuryWithdrawal.specs
|
|
, group "Governor Mutation Effect" GovernorMutation.specs
|
|
]
|
|
, group "Stake" Stake.specs
|
|
, group "Proposal" Proposal.specs
|
|
, group "AuthorityToken" AuthorityToken.specs
|
|
, group "Treasury" Treasury.specs
|
|
, group "AuthorityToken" AuthorityToken.specs
|
|
, group "Governor" Governor.specs
|
|
]
|
|
|
|
csv = decodeUtf8 $ encodeDefaultOrderedByNameWith encodeOptions res
|
|
|
|
prettified = renderLazy $ layoutPretty defaultLayoutOptions $ pretty res
|