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

import qualified System.Console.GetOpt as Console

data Flag
  = Help
  | Verbose
  | Version
  deriving (Flag -> Flag -> Bool
(Flag -> Flag -> Bool) -> (Flag -> Flag -> Bool) -> Eq Flag
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
(Int -> Flag -> ShowS)
-> (Flag -> String) -> ([Flag] -> ShowS) -> Show Flag
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 =
  [ 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 and exits"
  , String -> [String] -> ArgDescr Flag -> String -> OptDescr Flag
forall a. String -> [String] -> ArgDescr a -> String -> OptDescr a
Console.Option
    [Char
'v']
    [String
"version"]
    (Flag -> ArgDescr Flag
forall a. a -> ArgDescr a
Console.NoArg Flag
Version)
    String
"shows the version number and exits"
  , String -> [String] -> ArgDescr Flag -> String -> OptDescr Flag
forall a. String -> [String] -> ArgDescr a -> String -> OptDescr a
Console.Option
    []
    [String
"verbose"]
    (Flag -> ArgDescr Flag
forall a. a -> ArgDescr a
Console.NoArg Flag
Verbose)
    String
"outputs derived instances"
  ]