tlynx-0.1.0: src/Shuffle/Options.hs
{- |
Module : Shuffle.Options
Description : Options for the connect subcommand
Copyright : (c) Dominik Schrempf 2019
License : GPL-3
Maintainer : dominik.schrempf@gmail.com
Stability : unstable
Portability : portable
Creation date: Thu Sep 19 15:02:21 2019.
-}
module Shuffle.Options
( ShuffleArguments (..)
, Shuffle
, shuffleArguments
) where
import Control.Monad.Logger
import Control.Monad.Trans.Reader
-- import Data.Word
import Options.Applicative
-- import ELynx.Tools.Options
-- | Arguments of shuffle command.
data ShuffleArguments = ShuffleArguments
{ newickIqTreeFlag :: Bool
, nReplicates :: Int
, inFile :: FilePath }
-- -- TODO. Too complicated at the moment with MWC, use MonadRandom, but then
-- -- seed option would not match other commands, so leave the option out for
-- -- now. Maybe, when working on this, try using splitmix consistently.
--
-- -- | Seed of NRG, random if 'Nothing'.
-- , argsSeed :: Maybe [Word32] }
-- | Logger and reader data type.
type Shuffle = LoggingT (ReaderT ShuffleArguments IO)
-- | Parse arguments of shuffle command.
shuffleArguments :: Parser ShuffleArguments
shuffleArguments = ShuffleArguments
<$> newickIqTree
<*> n
<*> file
-- <*> seedOpt
newickIqTree :: Parser Bool
newickIqTree = switch $
long "newick-iqtree"
<> short 'i'
<> help "Use IQ-TREE Newick format (internal node labels are branch support values)"
n :: Parser Int
n = option auto $
long "replicates"
<> short 'n'
<> metavar "N"
<> value 1
<> help "Number of trees to generate"
file :: Parser FilePath
file = strArgument $
metavar "TREE-FILE"
<> help "File containing a Newick tree"