38 lines
1.1 KiB
Haskell
38 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.Driver
|
|
( Driver(..)
|
|
, IntermediateStage(..)
|
|
, drive
|
|
, execParser
|
|
) where
|
|
|
|
import Data.Maybe (fromMaybe)
|
|
import Language.Elna.Driver.CommandLine
|
|
( CommandLine(..)
|
|
, IntermediateStage(..)
|
|
, commandLine
|
|
)
|
|
import Options.Applicative (execParser)
|
|
import System.FilePath (replaceExtension, takeFileName)
|
|
|
|
data Driver = Driver
|
|
{ input :: FilePath
|
|
, output :: FilePath
|
|
, intermediateStage :: Maybe IntermediateStage
|
|
} deriving (Eq, Show)
|
|
|
|
drive :: IO Driver
|
|
drive = rewrite <$> execParser commandLine
|
|
where
|
|
rewrite CommandLine{..} =
|
|
let defaultOutputName = replaceExtension (takeFileName input) "o"
|
|
outputName = fromMaybe defaultOutputName output
|
|
in Driver
|
|
{ input = input
|
|
, output = outputName
|
|
, intermediateStage = intermediateStage
|
|
}
|