packages feed

ribosome-0.3.0.0: lib/Ribosome/Data/SettingError.hs

{-# LANGUAGE TemplateHaskell #-}

module Ribosome.Data.SettingError where

import Data.DeepPrisms (deepPrisms)
import Data.Text.Prettyprint.Doc (Doc)
import Data.Text.Prettyprint.Doc.Render.Terminal (AnsiStyle)
import System.Log (Priority(NOTICE))

import Ribosome.Data.ErrorReport (ErrorReport(..))
import Ribosome.Error.Report.Class (ReportError(..))

data SettingError =
  Decode Text (Doc AnsiStyle)
  |
  Unset Text
  deriving Show

deepPrisms ''SettingError

instance ReportError SettingError where
  errorReport (Decode name message) =
    ErrorReport ("invalid setting: " <> name) ["failed to decode setting `" <> name <> "`", show message] NOTICE
  errorReport (Unset name) =
    ErrorReport ("required setting unset: " <> name) ["unset setting: `" <> name <> "`"] NOTICE