{-# LANGUAGE DeriveGeneric #-}

module Zifter.OptParse.Types where

import GHC.Generics

type Arguments = (Command, Flags)

type Instructions = (Dispatch, Settings)

data Command
    = CommandRun
    | CommandInstall Bool -- | Recursive?
    | CommandPreProcess
    | CommandPreCheck
    | CommandCheck
    deriving (Show, Eq)

data Flags = Flags
    { flagsOutputColor :: Bool
    , flagsOutputMode :: Maybe OutputMode
    } deriving (Show, Eq)

data Configuration =
    Configuration
    deriving (Show, Eq)

data Dispatch
    = DispatchRun
    | DispatchInstall Bool -- | recursive ?
    | DispatchPreProcess
    | DispatchPreCheck
    | DispatchCheck
    deriving (Show, Eq, Generic)

data Settings = Settings
    { setsOutputColor :: Bool
    , setsOutputMode :: OutputMode
    } deriving (Show, Eq, Generic)

data OutputMode
    = OutputLinear
    | OutputFast
    deriving (Show, Eq, Generic)