{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE NoImplicitPrelude #-} module Ethereum.Executable.BytecodeVisMain ( bytecodeVisMain ) where import Control.Monad.Logger import Data.String.ToString import Data.Text (null) import Ethereum.Analyzer.EVM import Protolude hiding (null) bytecodeVisMain :: Text -> Text -> LoggingT IO () bytecodeVisMain hexstring dotFilepath = do hs <- if null hexstring then lift getLine else return hexstring let (ctorDot, dispDot) = disasmToDotText2 $ EvmHexString hs if null dotFilepath then putText dispDot else do lift $ writeFile (toString dotFilepath) dispDot lift $ writeFile (toString $ dotFilepath <> "ctor.dot") ctorDot