module Chiasma.Data.KillPaneParams where

import Chiasma.Class.CmdArgs (CmdArgs (cmdArgs), flag1)
import Chiasma.Data.Target (Target)

data KillPaneParams =
  KillPaneParams {
    KillPaneParams -> Bool
allbut :: Bool,
    KillPaneParams -> Target
target :: Target
  }
  deriving stock (KillPaneParams -> KillPaneParams -> Bool
(KillPaneParams -> KillPaneParams -> Bool)
-> (KillPaneParams -> KillPaneParams -> Bool) -> Eq KillPaneParams
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: KillPaneParams -> KillPaneParams -> Bool
$c/= :: KillPaneParams -> KillPaneParams -> Bool
== :: KillPaneParams -> KillPaneParams -> Bool
$c== :: KillPaneParams -> KillPaneParams -> Bool
Eq, Int -> KillPaneParams -> ShowS
[KillPaneParams] -> ShowS
KillPaneParams -> String
(Int -> KillPaneParams -> ShowS)
-> (KillPaneParams -> String)
-> ([KillPaneParams] -> ShowS)
-> Show KillPaneParams
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [KillPaneParams] -> ShowS
$cshowList :: [KillPaneParams] -> ShowS
show :: KillPaneParams -> String
$cshow :: KillPaneParams -> String
showsPrec :: Int -> KillPaneParams -> ShowS
$cshowsPrec :: Int -> KillPaneParams -> ShowS
Show)

instance Default KillPaneParams where
  def :: KillPaneParams
def =
    KillPaneParams :: Bool -> Target -> KillPaneParams
KillPaneParams {
      $sel:allbut:KillPaneParams :: Bool
allbut = Bool
False,
      $sel:target:KillPaneParams :: Target
target = Target
forall a. Default a => a
def
    }

instance CmdArgs KillPaneParams where
  cmdArgs :: KillPaneParams -> [Text]
cmdArgs KillPaneParams {Bool
Target
target :: Target
allbut :: Bool
$sel:target:KillPaneParams :: KillPaneParams -> Target
$sel:allbut:KillPaneParams :: KillPaneParams -> Bool
..} =
    Text -> Bool -> [Text]
flag1 Text
"-a" Bool
allbut
    [Text] -> [Text] -> [Text]
forall a. Semigroup a => a -> a -> a
<>
    Target -> [Text]
forall a. CmdArgs a => a -> [Text]
cmdArgs Target
target