52 lines
1.0 KiB
Haskell
52 lines
1.0 KiB
Haskell
{-# 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")))
|