49 lines
1.1 KiB
Haskell
49 lines
1.1 KiB
Haskell
{- This Source Code Form is subject to the terms of the Mozilla Public License,
|
|
v. 2.0. If a copy of the MPL was not distributed with this file, You can
|
|
obtain one at https://mozilla.org/MPL/2.0/. -}
|
|
|
|
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."
|