diff --git a/mima-run/Mima/MimaRun/Options.hs b/mima-run/Mima/MimaRun/Options.hs index 658a54e..5e957ad 100644 --- a/mima-run/Mima/MimaRun/Options.hs +++ b/mima-run/Mima/MimaRun/Options.hs @@ -3,25 +3,40 @@ module Mima.MimaRun.Options , parserInfo ) where +import Data.List +import Data.Maybe import Options.Applicative data Options = Options - { inputFile :: FilePath - , steps :: Maybe Integer + { 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 = 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)