module HOPS.Options
( Options (..)
, getOptions
) where
import Data.Monoid
import Options.Applicative
data Options = Options
{
script :: String
, prec :: Int
, tagSeqs :: Maybe Int
, forAll :: Bool
, update :: Bool
, version :: Bool
, program :: [String]
}
optionsParser :: Parser Options
optionsParser =
abortOption ShowHelpText (long "help") <*> (Options
<$> strOption
( short 'f'
<> long "script"
<> metavar "FILENAME"
<> value ""
<> help "Filename of script to run" )
<*> option auto
( long "prec"
<> metavar "N"
<> value 15
<> help "Generating function precision [default: 15]" )
<*> optional (option auto
( long "tag"
<> metavar "N"
<> help "Read sequences from stdin and tag them, starting at N" ))
<*> switch
( long "forall"
<> help "Run program(s) on all sequences in the local DB" )
<*> switch
( long "update"
<> help "Update the local database" )
<*> switch
( long "version"
<> help "Show version info" )
<*> many (argument str (metavar "PROGRAMS...")))
getOptions :: IO Options
getOptions = execParser (info optionsParser fullDesc)