packages feed

hadolint-2.0.0: src/Hadolint.hs

module Hadolint
  ( module Hadolint.Lint,
    module Hadolint.Process,
    module Hadolint.Config,
    Result (..),
    OutputFormat (..),
    shallSkipErrorStatus,
    printResults,
  )
where

import Data.Text (Text)
import Hadolint.Config
import qualified Hadolint.Formatter.Checkstyle
import qualified Hadolint.Formatter.Codacy
import qualified Hadolint.Formatter.Codeclimate
import Hadolint.Formatter.Format (Result (..))
import qualified Hadolint.Formatter.Json
import qualified Hadolint.Formatter.TTY
import Hadolint.Lint
import Hadolint.Process
import Language.Docker.Parser (DockerfileError)

data OutputFormat
  = Json
  | TTY
  | CodeclimateJson
  | GitlabCodeclimateJson
  | Checkstyle
  | Codacy
  deriving (Show, Eq)

shallSkipErrorStatus :: OutputFormat -> Bool
shallSkipErrorStatus format = format `elem` [CodeclimateJson, Codacy]

printResults :: Foldable f => OutputFormat -> Bool -> f (Result Text DockerfileError) -> IO ()
printResults format nocolor allResults =
  case format of
    TTY -> Hadolint.Formatter.TTY.printResults allResults nocolor
    Json -> Hadolint.Formatter.Json.printResults allResults
    Checkstyle -> Hadolint.Formatter.Checkstyle.printResults allResults
    CodeclimateJson -> Hadolint.Formatter.Codeclimate.printResults allResults
    GitlabCodeclimateJson -> Hadolint.Formatter.Codeclimate.printGitlabResults allResults
    Codacy -> Hadolint.Formatter.Codacy.printResults allResults