summaryrefslogtreecommitdiff
path: root/lib/CheckDir.hs
diff options
context:
space:
mode:
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
+