From a1c99103003bfd466c77a369fb3312f922f336d0 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Fri, 20 Dec 2024 15:32:20 +0100 Subject: Add stage options --- lib/Language/Elna/Driver.hs | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 lib/Language/Elna/Driver.hs (limited to 'lib/Language/Elna/Driver.hs') 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 + } -- cgit v1.2.3