{- 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 }