-- SPDX-FileCopyrightText: 2021 Oxhead Alpha -- SPDX-License-Identifier: LicenseRef-MIT-OA module Main ( main ) where import Data.Version (showVersion) import Options.Applicative (execParser, footerDoc, fullDesc, header, help, helper, info, infoOption, long, progDesc) import Options.Applicative.Help.Pretty (Doc, linebreak) import Paths_morley (version) import Morley.App.CLI import Morley.Util.Main main :: IO () main = wrapMain $ join $ execParser programInfo where programInfo = info (helper <*> versionOption <*> argParser) $ mconcat [ fullDesc , progDesc "Morley: Haskell implementation of Michelson typechecker and interpreter" , header "Morley tools" , footerDoc $ usageDoc ] versionOption = infoOption ("morley-" <> showVersion version) (long "version" <> help "Show version.") usageDoc :: Maybe Doc usageDoc = Just $ mconcat [ "You can use help for specific COMMAND", linebreak , "EXAMPLE:", linebreak , " morley emulate run --help", linebreak , linebreak , "Documentation for morley tools can be found at the following links:", linebreak , " https://gitlab.com/morley-framework/morley/blob/master/README.md", linebreak , " https://gitlab.com/morley-framework/morley/tree/master/docs", linebreak , linebreak , "Sample contracts for running can be found at the following link:", linebreak , " https://gitlab.com/morley-framework/morley/tree/master/contracts", linebreak , linebreak , "USAGE EXAMPLE:", linebreak , " morley parse --contract add1.tz", linebreak , linebreak , " This command will parse contract stored in add1.tz", linebreak , " and return its representation in haskell types", linebreak , linebreak , " morley emulate originate --contract add1.tz --storage 1 --verbose", linebreak , linebreak , " This command will originate contract with code stored in add1.tz", linebreak , " with initial storage value set to 1 and return info about", linebreak , " originated contract: its balance, storage and contract code"]