From 3fd9fae66a353a0f42f9f67d2a5ec8eb081953d0 Mon Sep 17 00:00:00 2001 From: James Hobson Date: Wed, 12 Jan 2022 13:31:10 +0100 Subject: [PATCH] Changed to use IO Exceptions --- lib/GHCup/Utils.hs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/GHCup/Utils.hs b/lib/GHCup/Utils.hs index 555e455..fb6212f 100644 --- a/lib/GHCup/Utils.hs +++ b/lib/GHCup/Utils.hs @@ -887,18 +887,19 @@ applyPatches :: (MonadReader env m, HasDirs env, HasLog env, MonadIO m) => FilePath -- ^ dir containing patches -> FilePath -- ^ dir to apply patches in -> Excepts '[PatchFailed] m () -applyPatches pdir ddir = do - seriesExists <- liftIO (doesFileExist (pdir "series")) - patches <- if seriesExists - then - liftIO $ map (pdir ) . lines <$> readFile (pdir "series") - else - (fmap . fmap) (pdir ) $ liftIO $ sort <$> findFiles +applyPatches pdir ddir = do + let lexicographical = (fmap . fmap) (pdir ) $ sort <$> findFiles pdir (makeRegexOpts compExtended execBlank ([s|.+\.(patch|diff)$|] :: ByteString) ) + let quilt = map (pdir ) . lines <$> readFile (pdir "series") + + patches <- liftIO $ quilt `catchIO` (\e -> + if isDoesNotExistError e || isPermissionError e then + lexicographical + else throwIO e) forM_ patches $ \patch' -> applyPatch patch' ddir