packages feed

chiasma-0.10.0.0: lib/Chiasma/Data/TmuxRequest.hs

module Chiasma.Data.TmuxRequest where

import qualified Data.Text as Text
import Chiasma.Data.TmuxQuery (TmuxQuery (TmuxQuery))

data TmuxRequest =
  TmuxRequest {
    cmd :: Text,
    args :: [Text],
    query :: Maybe TmuxQuery
  }
  deriving stock (Eq, Show)

queryArgs :: TmuxQuery -> [Text]
queryArgs (TmuxQuery q) =
  ["-F", "'", q, "'"]

cmdline :: TmuxRequest -> [Text]
cmdline TmuxRequest { ..} =
  cmd : args ++ foldMap queryArgs query ++ ["\n"]

encode :: TmuxRequest -> ByteString
encode req =
  encodeUtf8 (Text.unwords (cmdline req))