module Hadolint.Formatter
  ( OutputFormat (..),
    Result (..),
    printResults,
    readMaybeOutputFormat,
  )
where

import Data.Text (Text)
import Hadolint.Formatter.Format
import Language.Docker.Parser (DockerfileError)
import qualified Hadolint.Formatter.Checkstyle as FormatCheckstyle
import qualified Hadolint.Formatter.Codacy as FormatCodacy
import qualified Hadolint.Formatter.Codeclimate as FormatCodeclimate
import qualified Hadolint.Formatter.Gnu as FormatGnu
import qualified Hadolint.Formatter.Json as FormatJson
import qualified Hadolint.Formatter.Sarif as FormatSarif
import qualified Hadolint.Formatter.SonarQube as FormatSonarQube
import qualified Hadolint.Formatter.TTY as FormatTTY


printResults ::
  Foldable f =>
  OutputFormat ->
  Bool ->
  Maybe FilePath ->
  f (Result Text DockerfileError) ->
  IO ()
printResults :: forall (f :: * -> *).
Foldable f =>
OutputFormat
-> Bool
-> Maybe FilePath
-> f (Result Text DockerfileError)
-> IO ()
printResults OutputFormat
format Bool
nocolor Maybe FilePath
filePathInReport f (Result Text DockerfileError)
allResults =
  case OutputFormat
format of
    OutputFormat
Checkstyle -> forall (f :: * -> *) s e.
(Foldable f, VisualStream s, TraversableStream s,
 ShowErrorComponent e) =>
f (Result s e) -> Maybe FilePath -> IO ()
FormatCheckstyle.printResults f (Result Text DockerfileError)
allResults Maybe FilePath
filePathInReport
    OutputFormat
Codacy -> forall (f :: * -> *) s e.
(Foldable f, VisualStream s, TraversableStream s,
 ShowErrorComponent e) =>
f (Result s e) -> IO ()
FormatCodacy.printResults f (Result Text DockerfileError)
allResults
    OutputFormat
CodeclimateJson -> forall s e (f :: * -> *).
(VisualStream s, TraversableStream s, ShowErrorComponent e,
 Foldable f) =>
f (Result s e) -> IO ()
FormatCodeclimate.printResults f (Result Text DockerfileError)
allResults
    OutputFormat
GitlabCodeclimateJson -> forall (f :: * -> *) s e.
(Foldable f, VisualStream s, TraversableStream s,
 ShowErrorComponent e) =>
f (Result s e) -> IO ()
FormatCodeclimate.printGitlabResults f (Result Text DockerfileError)
allResults
    OutputFormat
Gnu -> forall s e (f :: * -> *).
(VisualStream s, TraversableStream s, ShowErrorComponent e,
 Foldable f) =>
f (Result s e) -> IO ()
FormatGnu.printResults f (Result Text DockerfileError)
allResults
    OutputFormat
Json -> forall s e (f :: * -> *).
(VisualStream s, TraversableStream s, ShowErrorComponent e,
 Foldable f) =>
f (Result s e) -> IO ()
FormatJson.printResults f (Result Text DockerfileError)
allResults
    OutputFormat
Sarif -> forall s e (f :: * -> *).
(VisualStream s, TraversableStream s, ShowErrorComponent e,
 Foldable f) =>
f (Result s e) -> IO ()
FormatSarif.printResults f (Result Text DockerfileError)
allResults
    OutputFormat
SonarQube -> forall s e (f :: * -> *).
(VisualStream s, TraversableStream s, ShowErrorComponent e,
 Foldable f) =>
f (Result s e) -> IO ()
FormatSonarQube.printResults f (Result Text DockerfileError)
allResults
    OutputFormat
TTY -> forall s e (f :: * -> *).
(VisualStream s, TraversableStream s, ShowErrorComponent e,
 Foldable f) =>
f (Result s e) -> Bool -> IO ()
FormatTTY.printResults f (Result Text DockerfileError)
allResults Bool
nocolor