summaryrefslogtreecommitdiff
path: root/src/Command/Extract.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Command/Extract.hs')
-rw-r--r--src/Command/Extract.hs13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/Command/Extract.hs b/src/Command/Extract.hs
index a9ab292..bb4498d 100644
--- a/src/Command/Extract.hs
+++ b/src/Command/Extract.hs
@@ -98,8 +98,11 @@ cmdExtract (ExtractCommand ExtractOptions {..} ExtractArguments {..}) = do
wpath <- liftIO $ readFile (adir </> "path")
let tpath | isdir = extractDestination </> takeFileName wpath
| otherwise = extractDestination
- when (not extractForce) $ do
- liftIO (doesPathExist tpath) >>= \case
- True -> tfail $ "destination ‘" <> T.pack tpath <> "’ already exists"
- False -> return ()
- liftIO $ copyRecursiveForce (adir </> "data") tpath
+ liftIO (doesPathExist tpath) >>= \case
+ True
+ | extractForce -> liftIO (doesDirectoryExist tpath) >>= \case
+ True -> liftIO $ removeDirectoryRecursive tpath
+ False -> liftIO $ removeFile tpath
+ | otherwise -> tfail $ "destination ‘" <> T.pack tpath <> "’ already exists"
+ False -> return ()
+ liftIO $ copyRecursive (adir </> "data") tpath