module Chiasma.Data.TmuxRequest where import qualified Data.Text as Text import Chiasma.Data.TmuxQuery (TmuxQuery (TmuxQuery)) data TmuxRequest = TmuxRequest { TmuxRequest -> Text cmd :: Text, TmuxRequest -> [Text] args :: [Text], TmuxRequest -> Maybe TmuxQuery query :: Maybe TmuxQuery } deriving stock (TmuxRequest -> TmuxRequest -> Bool (TmuxRequest -> TmuxRequest -> Bool) -> (TmuxRequest -> TmuxRequest -> Bool) -> Eq TmuxRequest forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: TmuxRequest -> TmuxRequest -> Bool $c/= :: TmuxRequest -> TmuxRequest -> Bool == :: TmuxRequest -> TmuxRequest -> Bool $c== :: TmuxRequest -> TmuxRequest -> Bool Eq, Int -> TmuxRequest -> ShowS [TmuxRequest] -> ShowS TmuxRequest -> String (Int -> TmuxRequest -> ShowS) -> (TmuxRequest -> String) -> ([TmuxRequest] -> ShowS) -> Show TmuxRequest forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [TmuxRequest] -> ShowS $cshowList :: [TmuxRequest] -> ShowS show :: TmuxRequest -> String $cshow :: TmuxRequest -> String showsPrec :: Int -> TmuxRequest -> ShowS $cshowsPrec :: Int -> TmuxRequest -> ShowS Show) queryArgs :: TmuxQuery -> [Text] queryArgs :: TmuxQuery -> [Text] queryArgs (TmuxQuery Text q) = [Item [Text] "-F", Item [Text] "'", Text Item [Text] q, Item [Text] "'"] cmdline :: TmuxRequest -> [Text] cmdline :: TmuxRequest -> [Text] cmdline TmuxRequest { [Text] Maybe TmuxQuery Text query :: Maybe TmuxQuery args :: [Text] cmd :: Text $sel:query:TmuxRequest :: TmuxRequest -> Maybe TmuxQuery $sel:args:TmuxRequest :: TmuxRequest -> [Text] $sel:cmd:TmuxRequest :: TmuxRequest -> Text ..} = Text cmd Text -> [Text] -> [Text] forall a. a -> [a] -> [a] : [Text] args [Text] -> [Text] -> [Text] forall a. [a] -> [a] -> [a] ++ (TmuxQuery -> [Text]) -> Maybe TmuxQuery -> [Text] forall (t :: * -> *) m a. (Foldable t, Monoid m) => (a -> m) -> t a -> m foldMap TmuxQuery -> [Text] queryArgs Maybe TmuxQuery query [Text] -> [Text] -> [Text] forall a. [a] -> [a] -> [a] ++ [Item [Text] "\n"] encode :: TmuxRequest -> ByteString encode :: TmuxRequest -> ByteString encode TmuxRequest req = Text -> ByteString forall a b. ConvertUtf8 a b => a -> b encodeUtf8 ([Text] -> Text Text.unwords (TmuxRequest -> [Text] cmdline TmuxRequest req))