slynx-0.3.0: src/SLynx/Concatenate/Options.hs
{-# LANGUAGE DeriveGeneric #-}
-- |
-- Module : SLynx.Concatenate.Options
-- Description : ELynxSeq argument parsing
-- Copyright : (c) Dominik Schrempf 2018
-- License : GPL-3.0-or-later
--
-- Maintainer : dominik.schrempf@gmail.com
-- Stability : unstable
-- Portability : portable
--
-- Creation date: Sun Oct 7 17:29:45 2018.
module SLynx.Concatenate.Options
( ConcatenateArguments (..),
concatenateArguments,
)
where
import Control.Applicative
import ELynx.Data.Alphabet.Alphabet
import ELynx.Tools
import Options.Applicative
import SLynx.Tools
-- | Arguments needed to concatenate multi sequence alignments.
data ConcatenateArguments = ConcatenateArguments
{ ccAlphabet :: Alphabet,
ccInFiles :: [FilePath]
}
deriving (Eq, Show, Generic)
instance Reproducible ConcatenateArguments where
inFiles = ccInFiles
outSuffixes _ = [".fasta"]
getSeed _ = Nothing
setSeed = const
parser = concatenateArguments
cmdName = "concatenate"
cmdDsc = ["Concatenate sequences found in input files."]
instance FromJSON ConcatenateArguments
instance ToJSON ConcatenateArguments
-- | Command line parser.
concatenateArguments :: Parser ConcatenateArguments
concatenateArguments = ConcatenateArguments <$> alphabetOpt <*> some inFileArg
inFileArg :: Parser FilePath
inFileArg =
strArgument $ metavar "INPUT-FILE" <> help "Read sequences from INPUT-FILE"