From 0b29a7e82a8c2dcf9ce4f2fba3ec07896fa72397 Mon Sep 17 00:00:00 2001 From: stuebinm Date: Wed, 10 Nov 2021 23:26:10 +0100 Subject: fail on missing map assets (but not (yet?) on missing maps/entrypoints) --- lib/WriteRepo.hs | 11 ++++++++--- src/Main.hs | 10 ++++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/lib/WriteRepo.hs b/lib/WriteRepo.hs index c0bf31b..1ed3a84 100644 --- a/lib/WriteRepo.hs +++ b/lib/WriteRepo.hs @@ -16,15 +16,18 @@ import Data.Set (Set) import qualified Data.Set as S import Paths (normalise) import System.Directory.Extra (copyFile, createDirectoryIfMissing) +import System.Exit (ExitCode (..)) import System.FilePath (takeDirectory) import qualified System.FilePath as FP import System.FilePath.Posix (()) import Types (Dep (Local)) -writeAdjustedRepository :: FilePath -> FilePath -> DirResult -> IO () +writeAdjustedRepository :: FilePath -> FilePath -> DirResult -> IO ExitCode writeAdjustedRepository inPath outPath result - | resultIsFatal result = pure () + | resultIsFatal result = do + putStrLn "FATAL: Repository has missing assets; cannot write to outPath" + pure (ExitFailure 1) | otherwise = do createDirectoryIfMissing True outPath @@ -41,7 +44,7 @@ writeAdjustedRepository inPath outPath result let mapdir = takeDirectory mappath in mapMaybe (\case Local path -> Just . normalise mapdir $ path - _ -> Nothing) + _ -> Nothing) $ mapresultDepends mapresult) . toList $ dirresultMaps result @@ -53,3 +56,5 @@ writeAdjustedRepository inPath outPath result in do putStrLn $ "copying " <> assetPath <> " → " <> newPath copyFile assetPath newPath + + pure ExitSuccess diff --git a/src/Main.hs b/src/Main.hs index 1862c5b..9fefd82 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -17,6 +17,7 @@ import CheckDir (recursiveCheckDir) import WriteRepo (writeAdjustedRepository) import Types (Level (..)) import Util (printPretty) +import System.Exit (exitWith) -- | the options this cli tool can take data Options = Options @@ -47,15 +48,16 @@ run options = do lints <- recursiveCheckDir repo entry - case out options of - Just outpath -> writeAdjustedRepository repo outpath lints - Nothing -> pure () - if json options then printLB $ if pretty options then encodePretty lints else encode lints else printPretty (level, lints) + case out options of + Just outpath -> writeAdjustedRepository repo outpath lints + >>= exitWith + Nothing -> pure () + -- | haskell's many string types are FUN … printLB :: LB.ByteString -> IO () printLB a = putStrLn $ C8.unpack $ LB.toStrict a -- cgit v1.2.3