json-autotype-3.1.2: common/CommonCLI.hs
module CommonCLI(TypeOpts(..), unflag, tyOptParser) where
import Data.Monoid ((<>))
import Options.Applicative
import System.Process (system)
import qualified System.Environment (lookupEnv)
import System.Exit (ExitCode)
import Data.Aeson.AutoType.CodeGen (Lang(..))
data TypeOpts = TyOptions {
autounify :: Bool
, toplevel :: String
, debug :: Bool
, test :: Bool
, suggest :: Bool
, lang :: Lang
}
unflag :: Mod FlagFields Bool -> Parser Bool
unflag = flag True False
tyOptParser :: Parser TypeOpts
tyOptParser = TyOptions
<$> unflag (long "no-autounify" <> help "Do not automatically unify suggested candidates")
<*> strOption (short 't' <>
long "toplevel" <> value "TopLevel"
<> help "Name for toplevel data type")
<*> switch (long "debug" <> help "Set this flag to see more debugging info" )
<*> unflag (long "no-test" <> help "Do not run generated parser afterwards" )
<*> unflag (long "no-suggest" <> help "Do not suggest candidates for unification" )
<*> langOpts
langOpts :: Parser Lang
langOpts = flag Haskell Haskell (long "haskell")
<|> flag Haskell Elm (long "elm")