tlynx-0.1.0: src/Examine/Options.hs
{- |
Module : Examine.Options
Description : Tree analysis options
Copyright : (c) Dominik Schrempf 2019
License : GPL-3
Maintainer : dominik.schrempf@gmail.com
Stability : unstable
Portability : portable
Creation date: Thu Aug 29 08:16:45 2019.
-}
module Examine.Options
( ExamineArguments (..)
, Examine
, examineArguments
) where
import Control.Monad.Logger
import Control.Monad.Trans.Reader
import Options.Applicative
-- | Arguments needed to examine phylogenetic trees.
data ExamineArguments = ExamineArguments
{ argsInFile :: Maybe FilePath
, argsNewickIqTree :: Bool }
-- | Logger and reader data type.
type Examine = LoggingT (ReaderT ExamineArguments IO)
-- | Command line parser.
examineArguments :: Parser ExamineArguments
examineArguments = ExamineArguments <$>
optional inFile
<*> newickIqTree
inFile :: Parser FilePath
inFile = strArgument $
metavar "INPUT-FILE" <>
help "Read trees from INPUT-FILE"
newickIqTree :: Parser Bool
newickIqTree = switch $
long "newick-iqtree"
<> short 'i'
<> help "Use IQ-TREE Newick format (internal node labels are branch support values)"