hadolint-1.5.0: src/Hadolint/Formatter/Format.hs
module Hadolint.Formatter.Format
( formatErrorReason
, severityText
, stripNewlines
, Result(..)
, toResult
) where
import Data.DList (DList, fromList, singleton)
import Data.List (sort)
import Data.Monoid
import Hadolint.Rules
import ShellCheck.Interface
import Text.Parsec.Error
(ParseError, errorMessages, showErrorMessages)
data Result = Result
{ errors :: DList ParseError
, checks :: DList RuleCheck
} deriving (Eq)
instance Monoid Result where
mempty = Result mempty mempty
mappend (Result e1 c1) (Result e2 c2) = Result (e1 <> e2) (c1 <> c2)
toResult :: Either ParseError [RuleCheck] -> Result
toResult res =
case res of
Left err -> Result (singleton err) mempty
Right c -> Result mempty (fromList (sort c))
severityText :: Severity -> String
severityText severity =
case severity of
ErrorC -> "error"
WarningC -> "warning"
InfoC -> "info"
StyleC -> "style"
formatErrorReason :: ParseError -> String
formatErrorReason err =
showErrorMessages
"or"
"unknown parse error"
"expecting"
"unexpected"
"end of input"
(errorMessages err)
stripNewlines :: String -> String
stripNewlines =
map
(\c ->
if c == '\n'
then ' '
else c)