module Evoke.Type.Flag
  ( Flag (..),
    options,
  )
where

import qualified System.Console.GetOpt as Console

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

options :: [Console.OptDescr Flag]
options :: [OptDescr Flag]
options =
  [ forall a. String -> [String] -> ArgDescr a -> String -> OptDescr a
Console.Option
      [Char
'h', Char
'?']
      [String
"help"]
      (forall a. a -> ArgDescr a
Console.NoArg Flag
Help)
      String
"shows this help message and exits",
    forall a. String -> [String] -> ArgDescr a -> String -> OptDescr a
Console.Option
      [Char
'v']
      [String
"version"]
      (forall a. a -> ArgDescr a
Console.NoArg Flag
Version)
      String
"shows the version number and exits",
    forall a. String -> [String] -> ArgDescr a -> String -> OptDescr a
Console.Option
      []
      [String
"verbose"]
      (forall a. a -> ArgDescr a
Console.NoArg Flag
Verbose)
      String
"outputs derived instances"
  ]