packages feed

chiasma-0.12.2.0: lib/Chiasma/Data/Target.hs

module Chiasma.Data.Target where

import Chiasma.Class.CmdArgs (CmdArgs (cmdArgs))
import Chiasma.Data.TmuxId (PaneId, SessionId, WindowId, formatId)

data Target =
  Pane PaneId
  |
  Window WindowId
  |
  Session SessionId
  |
  Current
  deriving stock (Eq, Show)

formatTarget :: [Text] -> Target -> [Text]
formatTarget pre = \case
    Pane i -> pre <> [formatId i]
    Window i -> pre <> [formatId i]
    Session i -> pre <> [formatId i]
    Current -> []

instance CmdArgs Target where
  cmdArgs = \case
    Pane i -> ["-t", formatId i]
    Window i -> ["-t", formatId i]
    Session i -> ["-t", formatId i]
    Current -> []

instance Default Target where
  def =
    Current