{-# LANGUAGE NoFieldSelectors #-} module Gyehoek.Options ( Options(..) , parser ) where import System.IO (Handle) import Data.HashSet (HashSet) import Options.Applicative import System.FilePath import qualified Data.HashSet as HS import Control.Lens hiding (argument) import GHC.Generics (Generic) data Options = MkOptions { -- dumpANF :: Maybe FilePath -- , dumpQBE :: Maybe FilePath output :: Maybe FilePath , sourceFiles :: HashSet FilePath } deriving (Show, Generic) -- osPath :: ReadM _ -- osPath = eitherReader $ -- (_Left %~ show) . encodeUtf @(Either _) -- parseDumpQBE = -- optional $ strOption -- ( long "dump-qbe" -- <> metavar "FILE" -- ) -- parseDumpANF = -- optional $ strOption -- ( long "dump-anf" -- <> metavar "FILE" -- ) parseOutput = optional $ strOption ( long "output" <> short 'o' <> metavar "FILE" ) parser :: Parser Options parser = MkOptions <$> parseOutput <*> (HS.fromList <$> some (argument str (metavar "FILES")))