-- |Config data types for the CLI option parser.
module Ribosome.Data.CliConfig where

import Log (Severity)
import Path (Abs, File, Path)

-- |Intermediate data type with optional fields for 'Ribosome.LogConfig'.
data CliLogConfig =
  CliLogConfig {
    CliLogConfig -> Maybe (Path Abs File)
logFile :: Maybe (Path Abs File),
    CliLogConfig -> Maybe Severity
logLevelEcho :: Maybe Severity,
    CliLogConfig -> Maybe Severity
logLevelStderr :: Maybe Severity,
    CliLogConfig -> Maybe Severity
logLevelFile :: Maybe Severity
  }
  deriving stock (CliLogConfig -> CliLogConfig -> Bool
(CliLogConfig -> CliLogConfig -> Bool)
-> (CliLogConfig -> CliLogConfig -> Bool) -> Eq CliLogConfig
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CliLogConfig -> CliLogConfig -> Bool
$c/= :: CliLogConfig -> CliLogConfig -> Bool
== :: CliLogConfig -> CliLogConfig -> Bool
$c== :: CliLogConfig -> CliLogConfig -> Bool
Eq, Int -> CliLogConfig -> ShowS
[CliLogConfig] -> ShowS
CliLogConfig -> String
(Int -> CliLogConfig -> ShowS)
-> (CliLogConfig -> String)
-> ([CliLogConfig] -> ShowS)
-> Show CliLogConfig
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CliLogConfig] -> ShowS
$cshowList :: [CliLogConfig] -> ShowS
show :: CliLogConfig -> String
$cshow :: CliLogConfig -> String
showsPrec :: Int -> CliLogConfig -> ShowS
$cshowsPrec :: Int -> CliLogConfig -> ShowS
Show)

-- |Intermediate data type with optional fields for 'Ribosome.HostConfig'.
data CliConfig =
  CliConfig {
    CliConfig -> CliLogConfig
log :: CliLogConfig
  }
  deriving stock (CliConfig -> CliConfig -> Bool
(CliConfig -> CliConfig -> Bool)
-> (CliConfig -> CliConfig -> Bool) -> Eq CliConfig
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CliConfig -> CliConfig -> Bool
$c/= :: CliConfig -> CliConfig -> Bool
== :: CliConfig -> CliConfig -> Bool
$c== :: CliConfig -> CliConfig -> Bool
Eq, Int -> CliConfig -> ShowS
[CliConfig] -> ShowS
CliConfig -> String
(Int -> CliConfig -> ShowS)
-> (CliConfig -> String)
-> ([CliConfig] -> ShowS)
-> Show CliConfig
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CliConfig] -> ShowS
$cshowList :: [CliConfig] -> ShowS
show :: CliConfig -> String
$cshow :: CliConfig -> String
showsPrec :: Int -> CliConfig -> ShowS
$cshowsPrec :: Int -> CliConfig -> ShowS
Show)