diff options
Diffstat (limited to 'lib/Language/Elna/Driver.hs')
| -rw-r--r-- | lib/Language/Elna/Driver.hs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/Language/Elna/Driver.hs b/lib/Language/Elna/Driver.hs new file mode 100644 index 0000000..9d13f59 --- /dev/null +++ b/lib/Language/Elna/Driver.hs @@ -0,0 +1,37 @@ +{- 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 + } |
