packages feed

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

module Chiasma.Data.WindowParams where

import Path (Abs, Dir, Path)

import Chiasma.Class.CmdArgs (CmdArgs (cmdArgs), arg, envVars, flag1, identOption, optionWith)
import Chiasma.Data.Ident (Ident)
import Chiasma.Data.Target (Target)
import Chiasma.Path (pathText')

data WindowParams =
  WindowParams {
    after :: Bool,
    detach :: Bool,
    killExisting :: Bool,
    printInfo :: Bool,
    cwd :: Maybe (Path Abs Dir),
    environment :: Map Text Text,
    name :: Maybe Ident,
    target :: Target,
    command :: Maybe Text
  }
  deriving stock (Eq, Show)

instance Default WindowParams where
  def =
    WindowParams {
      after = False,
      detach = False,
      killExisting = False,
      printInfo = True,
      cwd = Nothing,
      environment = mempty,
      name = Nothing,
      target = def,
      command = Nothing
    }

instance CmdArgs WindowParams where
  cmdArgs WindowParams {..} =
    flag1 "-a" after
    <>
    flag1 "-d" detach
    <>
    flag1 "-k" killExisting
    <>
    flag1 "-P" printInfo
    <>
    optionWith "-c" pathText' cwd
    <>
    envVars environment
    <>
    identOption "-n" name
    <>
    cmdArgs target
    <>
    arg command