summaryrefslogtreecommitdiff
path: root/lib/CheckDir.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/CheckDir.hs')
-rw-r--r--lib/CheckDir.hs24
1 files changed, 18 insertions, 6 deletions
diff --git a/lib/CheckDir.hs b/lib/CheckDir.hs
index d651815..4654051 100644
--- a/lib/CheckDir.hs
+++ b/lib/CheckDir.hs
@@ -6,17 +6,17 @@
{-# LANGUAGE TupleSections #-}
-- | Module that contains high-level checking for an entire directory
-module CheckDir (recursiveCheckDir) where
+module CheckDir (recursiveCheckDir, writeAdjustedRepository) where
-import CheckMap (MapResult (mapresultProvides),
+import CheckMap (MapResult (mapresultAdjusted, mapresultProvides),
loadAndLintMap, mapresultDepends)
import Control.Monad (void)
import Control.Monad.Extra (mapMaybeM)
-import Data.Aeson (ToJSON, (.=))
+import Data.Aeson (ToJSON, encodeFile, (.=))
import qualified Data.Aeson as A
import Data.Foldable (fold)
import Data.Functor ((<&>))
-import Data.Map (Map)
+import Data.Map (Map, toList)
import qualified Data.Map as M
import Data.Map.Strict (mapKeys, (\\))
import Data.Maybe (mapMaybe)
@@ -43,8 +43,11 @@ listFromSet = map fst . M.toList
-- | Result of linting an entire directory / repository
data DirResult = DirResult
{ dirresultMaps :: Map FilePath MapResult
+ -- ^ all maps of this respository, by (local) filepath
, dirresultDeps :: [MissingDep]
+ -- ^ all dependencies to things outside this repository
, dirresultMissingAssets :: [MissingAsset]
+ -- ^ local things that are referred to but missing
} deriving (Generic)
data MissingDep = MissingDep
@@ -176,10 +179,10 @@ recursiveCheckDir' prefix paths done acc = do
let mapdeps = concatMap
- (\(m,res) ->
+ (\(m,lintresult) ->
let ps = mapMaybe
(\case {LocalMap p -> Just p; _ -> Nothing})
- (mapresultDepends res)
+ (mapresultDepends lintresult)
in map (FP.normalise . normalise (takeDirectory m)) ps
)
lints
@@ -199,3 +202,12 @@ recursiveCheckDir' prefix paths done acc = do
case unknowns of
[] -> pure acc'
_ -> recursiveCheckDir' prefix unknowns knowns acc'
+
+
+
+
+writeAdjustedRepository :: FilePath -> DirResult -> IO ()
+writeAdjustedRepository outPath result =
+ mapM_
+ (\(path,out) -> encodeFile (outPath </> path) $ mapresultAdjusted out)
+ (toList $ dirresultMaps result)