module Language.Elna.CommandLine ( CommandLine(..) , commandLine , execParser ) where import Options.Applicative ( Parser , ParserInfo(..) , argument , execParser , fullDesc , help , helper , info , long , metavar , optional , progDesc , short , str , strOption ) import Control.Applicative ((<**>)) data CommandLine = CommandLine { input :: FilePath , output :: Maybe FilePath } deriving (Eq, Show) parser :: Parser CommandLine parser = CommandLine <$> argument str inFile <*> optional (strOption outFile) where inFile = metavar "INFILE" <> help "Input file." outFile = long "output" <> short 'o' <> metavar "OUTFILE" <> help "Output file." commandLine :: ParserInfo CommandLine commandLine = info (parser <**> helper) $ fullDesc <> progDesc "Elna compiler."