{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
module Tools
(
readSeqs
, alphabetOpt
) where
import Control.Monad.IO.Class
import Control.Monad.Logger
import qualified Data.Text as T
import Options.Applicative
import ELynx.Data.Alphabet.Alphabet
import ELynx.Data.Sequence.Sequence
import ELynx.Import.Sequence.Fasta
import ELynx.Tools.InputOutput
readSeqs :: (MonadIO m, MonadLogger m) => Alphabet -> Maybe FilePath -> m [Sequence]
readSeqs a mfp = do
case mfp of
Nothing -> $(logInfo) $ T.pack
$ "Read sequences from standard input; alphabet "
<> show a <> "."
Just fp -> $(logInfo) $ T.pack
$ "Read sequences from file "
<> fp <> "; alphabet" <> show a <> "."
liftIO $ parseFileOrIOWith (fasta a) mfp
alphabetOpt :: Parser Alphabet
alphabetOpt = option auto $
long "alphabet" <>
short 'a' <>
metavar "NAME" <>
help "Specify alphabet type NAME"