module ServantSerf.Type.Flag where

import qualified System.Console.GetOpt as Console

data Flag
  = ApiName String
  | Depth String
  | ExcludeSuffix String
  | Help
  | ModuleName String
  | ServerName String
  | Version
  deriving (Flag -> Flag -> Bool
(Flag -> Flag -> Bool) -> (Flag -> Flag -> Bool) -> Eq Flag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Flag -> Flag -> Bool
== :: Flag -> Flag -> Bool
$c/= :: Flag -> Flag -> Bool
/= :: Flag -> Flag -> Bool
Eq, Int -> Flag -> ShowS
[Flag] -> ShowS
Flag -> String
(Int -> Flag -> ShowS)
-> (Flag -> String) -> ([Flag] -> ShowS) -> Show Flag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Flag -> ShowS
showsPrec :: Int -> Flag -> ShowS
$cshow :: Flag -> String
show :: Flag -> String
$cshowList :: [Flag] -> ShowS
showList :: [Flag] -> ShowS
Show)

options :: [Console.OptDescr Flag]
options :: [OptDescr Flag]
options =
  [ String -> [String] -> ArgDescr Flag -> String -> OptDescr Flag
forall a. String -> [String] -> ArgDescr a -> String -> OptDescr a
Console.Option
      [Char
'h', Char
'?']
      [String
"help"]
      (Flag -> ArgDescr Flag
forall a. a -> ArgDescr a
Console.NoArg Flag
Help)
      String
"Shows this help message, then exits.",
    String -> [String] -> ArgDescr Flag -> String -> OptDescr Flag
forall a. String -> [String] -> ArgDescr a -> String -> OptDescr a
Console.Option
      []
      [String
"version"]
      (Flag -> ArgDescr Flag
forall a. a -> ArgDescr a
Console.NoArg Flag
Version)
      String
"Shows the version number, then exits.",
    String -> [String] -> ArgDescr Flag -> String -> OptDescr Flag
forall a. String -> [String] -> ArgDescr a -> String -> OptDescr a
Console.Option
      []
      [String
"api-name"]
      ((String -> Flag) -> String -> ArgDescr Flag
forall a. (String -> a) -> String -> ArgDescr a
Console.ReqArg String -> Flag
ApiName String
"API_NAME")
      String
"Sets the name to use for the API type. Defaults to `API`.",
    String -> [String] -> ArgDescr Flag -> String -> OptDescr Flag
forall a. String -> [String] -> ArgDescr a -> String -> OptDescr a
Console.Option
      []
      [String
"depth"]
      ((String -> Flag) -> String -> ArgDescr Flag
forall a. (String -> a) -> String -> ArgDescr a
Console.ReqArg String -> Flag
Depth String
"DEPTH")
      String
"Controls whether to search through only one directory (`shallow`) or recursively (`deep`). Defaults to `deep`.",
    String -> [String] -> ArgDescr Flag -> String -> OptDescr Flag
forall a. String -> [String] -> ArgDescr a -> String -> OptDescr a
Console.Option
      []
      [String
"exclude-suffix"]
      ((String -> Flag) -> String -> ArgDescr Flag
forall a. (String -> a) -> String -> ArgDescr a
Console.ReqArg String -> Flag
ExcludeSuffix String
"SUFFIX")
      String
"Sets the module suffix to exclude. Defaults to the empty string.",
    String -> [String] -> ArgDescr Flag -> String -> OptDescr Flag
forall a. String -> [String] -> ArgDescr a -> String -> OptDescr a
Console.Option
      []
      [String
"module-name"]
      ((String -> Flag) -> String -> ArgDescr Flag
forall a. (String -> a) -> String -> ArgDescr a
Console.ReqArg String -> Flag
ModuleName String
"MODULE_NAME")
      String
"Sets the name of the generated module. By default this is generated from the source file name.",
    String -> [String] -> ArgDescr Flag -> String -> OptDescr Flag
forall a. String -> [String] -> ArgDescr a -> String -> OptDescr a
Console.Option
      []
      [String
"server-name"]
      ((String -> Flag) -> String -> ArgDescr Flag
forall a. (String -> a) -> String -> ArgDescr a
Console.ReqArg String -> Flag
ServerName String
"SERVER_NAME")
      String
"Sets the name to use for the server value. Defaults to `server`."
  ]