summaryrefslogtreecommitdiff
path: root/lib/CheckDir.hs
diff options
context:
space:
mode:
authorstuebinm2021-11-17 00:51:21 +0100
committerstuebinm2021-11-17 00:51:21 +0100
commita572b9e1b113e0c8bea94c4f561c35742cdf4aeb (patch)
tree478e848a77a5289356bb9acef8746f347f0b6275 /lib/CheckDir.hs
parent7b079ff7a66ea0d7baa12fa16f084f025c1c9fce (diff)
exit with code 1 if maximum lint level exceeded
Diffstat (limited to 'lib/CheckDir.hs')
-rw-r--r--lib/CheckDir.hs26
1 files changed, 18 insertions, 8 deletions
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
+