{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE OverloadedStrings #-} module Hcompta.CLI.Context where import Control.Monad (Monad(..)) import Data.Bool import Data.String (String) import Data.Eq (Eq) import Data.Maybe (Maybe(..)) import Data.Ord (Ord) import Text.Show (Show) import Prelude (($), (.), Bounded(..), Enum(..), IO) import Hcompta.CLI.Lang (Lang) import qualified Hcompta.CLI.Lang as Lang data App = App data Context = Context { verbosity :: Verbosity , command :: String , color :: Maybe Bool , lang :: Lang } deriving (Show) context :: IO Context context = do lang <- Lang.from_Env return $ Context { verbosity = Verbosity_Info , command = "" , color = Nothing , lang } data Verbosity = Verbosity_Error | Verbosity_Warn | Verbosity_Info | Verbosity_Debug deriving (Bounded, Enum, Eq, Ord, Show) translate :: Lang.Translate f t => Context -> f -> t translate = Lang.translate . lang