diff options
Diffstat (limited to 'src/Command/Extract.hs')
| -rw-r--r-- | src/Command/Extract.hs | 13 |
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 |