mima-tools/mima-run/Mima/MimaRun/Options.hs
2020-03-29 11:12:38 +00:00

42 lines
1.1 KiB
Haskell

module Mima.MimaRun.Options
( Options(..)
, parserInfo
) where
import Data.List
import Data.Maybe
import Options.Applicative
data Options = Options
{ inputFile :: FilePath
, metadataFile :: FilePath
, steps :: Maybe Integer
} deriving (Show)
createOptions :: FilePath -> Maybe FilePath -> Maybe Integer -> Options
createOptions inFile metaFile = Options inFile resolvedMetadataFile
where
inputRenamedToMeta = removeExtension inFile ++ "mima-meta"
resolvedMetadataFile = fromMaybe inputRenamedToMeta metaFile
removeExtension = dropWhileEnd (/= '.')
parser :: Parser Options
parser = createOptions
<$> strArgument
( help "The .mima file to use"
<> metavar "INPUTFILE"
)
<*> (optional . strOption)
( short 'm'
<> long "metadata"
<> help "The metadata file to use"
<> metavar "METAFILE"
)
<*> (optional . option auto)
( short 'n'
<> long "steps"
<> help "Maximum number of steps to execute"
<> metavar "STEPS"
)
parserInfo :: ParserInfo Options
parserInfo = info (parser <**> helper) (failureCode 1)