slynx-0.0.1: src/Examine/Options.hs
{- |
Module : Examine.Options
Description : ELynxSeq argument parsing
Copyright : (c) Dominik Schrempf 2018
License : GPL-3
Maintainer : dominik.schrempf@gmail.com
Stability : unstable
Portability : portable
Creation date: Sun Oct 7 17:29:45 2018.
-}
module Examine.Options
( ExamineArguments (..)
, Examine
, examineArguments
) where
import Control.Applicative
import Control.Monad.Logger
import Control.Monad.Trans.Reader
import Options.Applicative
import Tools
import ELynx.Data.Alphabet.Alphabet
-- | Arguments needed to examine sequences.
data ExamineArguments = ExamineArguments
{ exAlphabet :: Alphabet
, exInFile :: Maybe FilePath
, exPerSite :: Bool }
-- | Logger and Reader type.
type Examine = LoggingT (ReaderT ExamineArguments IO)
-- | Command line parser.
examineArguments :: Parser ExamineArguments
examineArguments = ExamineArguments
<$> alphabetOpt
<*> optional filePathArg
<*> examinePerSiteOpt
examinePerSiteOpt :: Parser Bool
examinePerSiteOpt = switch $
long "per-site" <>
help "Report per site summary statistics"
filePathArg :: Parser FilePath
filePathArg = strArgument $
metavar "INPUT-FILE" <>
help "Read sequences from INPUT-FILE"