module Iris.Cli.Colour (
ColourOption (..),
colourOptionP,
) where
import Control.Applicative ((<|>))
import qualified Options.Applicative as Opt
data ColourOption
=
Always
|
Never
|
Auto
deriving stock
( Int -> ColourOption -> ShowS
[ColourOption] -> ShowS
ColourOption -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ColourOption] -> ShowS
$cshowList :: [ColourOption] -> ShowS
show :: ColourOption -> String
$cshow :: ColourOption -> String
showsPrec :: Int -> ColourOption -> ShowS
$cshowsPrec :: Int -> ColourOption -> ShowS
Show
, ColourOption -> ColourOption -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ColourOption -> ColourOption -> Bool
$c/= :: ColourOption -> ColourOption -> Bool
== :: ColourOption -> ColourOption -> Bool
$c== :: ColourOption -> ColourOption -> Bool
Eq
, Eq ColourOption
ColourOption -> ColourOption -> Bool
ColourOption -> ColourOption -> Ordering
ColourOption -> ColourOption -> ColourOption
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ColourOption -> ColourOption -> ColourOption
$cmin :: ColourOption -> ColourOption -> ColourOption
max :: ColourOption -> ColourOption -> ColourOption
$cmax :: ColourOption -> ColourOption -> ColourOption
>= :: ColourOption -> ColourOption -> Bool
$c>= :: ColourOption -> ColourOption -> Bool
> :: ColourOption -> ColourOption -> Bool
$c> :: ColourOption -> ColourOption -> Bool
<= :: ColourOption -> ColourOption -> Bool
$c<= :: ColourOption -> ColourOption -> Bool
< :: ColourOption -> ColourOption -> Bool
$c< :: ColourOption -> ColourOption -> Bool
compare :: ColourOption -> ColourOption -> Ordering
$ccompare :: ColourOption -> ColourOption -> Ordering
Ord
, Int -> ColourOption
ColourOption -> Int
ColourOption -> [ColourOption]
ColourOption -> ColourOption
ColourOption -> ColourOption -> [ColourOption]
ColourOption -> ColourOption -> ColourOption -> [ColourOption]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: ColourOption -> ColourOption -> ColourOption -> [ColourOption]
$cenumFromThenTo :: ColourOption -> ColourOption -> ColourOption -> [ColourOption]
enumFromTo :: ColourOption -> ColourOption -> [ColourOption]
$cenumFromTo :: ColourOption -> ColourOption -> [ColourOption]
enumFromThen :: ColourOption -> ColourOption -> [ColourOption]
$cenumFromThen :: ColourOption -> ColourOption -> [ColourOption]
enumFrom :: ColourOption -> [ColourOption]
$cenumFrom :: ColourOption -> [ColourOption]
fromEnum :: ColourOption -> Int
$cfromEnum :: ColourOption -> Int
toEnum :: Int -> ColourOption
$ctoEnum :: Int -> ColourOption
pred :: ColourOption -> ColourOption
$cpred :: ColourOption -> ColourOption
succ :: ColourOption -> ColourOption
$csucc :: ColourOption -> ColourOption
Enum
, ColourOption
forall a. a -> a -> Bounded a
maxBound :: ColourOption
$cmaxBound :: ColourOption
minBound :: ColourOption
$cminBound :: ColourOption
Bounded
)
colourOptionP :: Opt.Parser ColourOption
colourOptionP :: Parser ColourOption
colourOptionP = Parser ColourOption
alwaysP forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> Parser ColourOption
neverP forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall (f :: * -> *) a. Applicative f => a -> f a
pure ColourOption
Auto
where
alwaysP :: Parser ColourOption
alwaysP =
forall a. a -> Mod FlagFields a -> Parser a
Opt.flag' ColourOption
Always (forall (f :: * -> *) a. HasName f => String -> Mod f a
Opt.long String
"colour" forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. String -> Mod f a
Opt.help String
"Always output colours")
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall a. a -> Mod FlagFields a -> Parser a
Opt.flag' ColourOption
Always (forall (f :: * -> *) a. HasName f => String -> Mod f a
Opt.long String
"color" forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. Mod f a
Opt.internal)
neverP :: Parser ColourOption
neverP =
forall a. a -> Mod FlagFields a -> Parser a
Opt.flag' ColourOption
Never (forall (f :: * -> *) a. HasName f => String -> Mod f a
Opt.long String
"no-colour" forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. String -> Mod f a
Opt.help String
"Never output colours")
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall a. a -> Mod FlagFields a -> Parser a
Opt.flag' ColourOption
Never (forall (f :: * -> *) a. HasName f => String -> Mod f a
Opt.long String
"no-color" forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. Mod f a
Opt.internal)
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall a. a -> Mod FlagFields a -> Parser a
Opt.flag' ColourOption
Never (forall (f :: * -> *) a. HasName f => String -> Mod f a
Opt.long String
"disable-color" forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. Mod f a
Opt.internal)
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall a. a -> Mod FlagFields a -> Parser a
Opt.flag' ColourOption
Never (forall (f :: * -> *) a. HasName f => String -> Mod f a
Opt.long String
"disable-coulor" forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. Mod f a
Opt.internal)