pinch-gen-0.4.4.0: src/Main.hs
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Options.Applicative
import Pinch.Generate
data Options = Options
{ inputFile :: FilePath
, outputDir :: FilePath
, genSettings :: Settings
}
deriving (Show)
pOptions :: Parser Options
pOptions = Options
<$> strOption (long "in" <> metavar "IN_FILE" <> help "Thrift input file")
<*> strOption (long "out" <> metavar "OUT_DIR" <> help "Output folder")
<*> pGenSettings
pGenSettings :: Parser Settings
pGenSettings = Settings
<$> strOption (long "hashable-vec-mod" <> help "Module containing hashable instances for vector")
<*> flag True False (long "no-generate-arbitrary")
<*> flag True False (long "no-generate-nfdata")
<*> many (strOption (long "extra-import" <> metavar "IMPORT"))
<*> strOption
( long "module-prefix"
<> help "Prefix of module name for generated files, e.g. 'Gen.Agent.'"
<> value ""
)
main :: IO ()
main = do
opts <- execParser pOpts
generate (genSettings opts) (inputFile opts) (outputDir opts)
where
pOpts = info (pOptions <**> helper)
( fullDesc
<> progDesc "Generate Haskell files from a thrift input file."
<> header "Thrift Haskell Code Generator")