From a572b9e1b113e0c8bea94c4f561c35742cdf4aeb Mon Sep 17 00:00:00 2001 From: stuebinm Date: Wed, 17 Nov 2021 00:51:21 +0100 Subject: exit with code 1 if maximum lint level exceeded --- lib/CheckDir.hs | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'lib/CheckDir.hs') diff --git a/lib/CheckDir.hs b/lib/CheckDir.hs index 4d81bc2..680039c 100644 --- a/lib/CheckDir.hs +++ b/lib/CheckDir.hs @@ -4,32 +4,33 @@ {-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TupleSections #-} +{-# LANGUAGE TypeFamilies #-} -- | Module that contains high-level checking for an entire directory module CheckDir (recursiveCheckDir, DirResult(..), resultIsFatal) where -import CheckMap (MapResult (mapresultProvides), - loadAndLintMap, mapresultDepends) +import CheckMap (MapResult (..), loadAndLintMap) import Control.Monad (void) import Control.Monad.Extra (mapMaybeM) import Data.Aeson (ToJSON, (.=)) import qualified Data.Aeson as A import Data.Foldable (fold) import Data.Functor ((<&>)) -import Data.Map (Map) +import Data.Map (Map, elems, keys) import qualified Data.Map as M import Data.Map.Strict (mapKeys, (\\)) import Data.Maybe (mapMaybe) import Data.Text (Text) import qualified Data.Text as T import GHC.Generics (Generic) -import LintConfig (LintConfig') +import LintConfig (LintConfig', configMaxLintLevel) import Paths (normalise, normaliseWithFrag) import System.Directory.Extra (doesFileExist) import System.FilePath (splitPath, ()) import qualified System.FilePath as FP import System.FilePath.Posix (takeDirectory) -import Types (Dep (Local, LocalMap), Level) +import Types (Dep (Local, LocalMap), Level (..), + hintLevel) import Util (PrettyPrint (prettyprint)) @@ -59,9 +60,18 @@ data MissingDep = MissingDep newtype MissingAsset = MissingAsset MissingDep -resultIsFatal :: DirResult -> Bool -resultIsFatal res = - not $ null (dirresultMissingAssets res) +resultIsFatal :: LintConfig' -> DirResult -> Bool +resultIsFatal config res = + (not (null (dirresultMissingAssets res))) + && (configMaxLintLevel config) <= maxObservedLevel + where maxObservedLevel = maximum + . map hintLevel + . concatMap keys + . map mapresultLayer + . elems + . dirresultMaps + $ res + -- cgit v1.2.3