hadolint-1.5.0: src/Hadolint/Formatter/TTY.hs
module Hadolint.Formatter.TTY
( printResult
, formatError
) where
import Hadolint.Formatter.Format
import Hadolint.Rules
import Language.Docker.Syntax
import Text.Parsec.Error (ParseError, errorPos)
import Text.Parsec.Pos
formatErrors :: Functor t => t ParseError -> t String
formatErrors = fmap formatError
formatError :: ParseError -> String
formatError err = posPart ++ stripNewlines (formatErrorReason err)
where
pos = errorPos err
posPart = sourceName pos ++ ":" ++ show (sourceLine pos) ++ ":" ++ show (sourceColumn pos)
formatChecks :: Functor t => t RuleCheck -> t String
formatChecks = fmap formatCheck
where
formatCheck (RuleCheck metadata source linenumber _) =
formatPos source linenumber ++ code metadata ++ " " ++ message metadata
formatPos :: Filename -> Linenumber -> String
formatPos source linenumber =
if linenumber >= 0
then source ++ ":" ++ show linenumber ++ " "
else source ++ " "
printResult :: Result -> IO ()
printResult (Result errors checks) = printErrors >> printChecks
where
printErrors = mapM_ putStrLn (formatErrors errors)
printChecks = mapM_ putStrLn (formatChecks checks)